Java工厂设计模式
工厂模式的核心思想就是把创建对象和使用对象解藕,由工厂负责对象的创建,而用户只能通过接口来使用对象,这样就可以灵活应对变化的业务需求,方便代码管理、避免代码重复。
1.工厂设计模式的例子:水果,苹果和橘子
程序在接口和子类之间加入一个过渡类,通过此过渡类端取得接口的实例化对象,一般都会称这个过渡端为工厂类
interface Fruit{ public void eat(); } // Apple类实现了Fruit接口 class Apple implements Fruit{ @Override public void eat() { System.out.println("eat apple!"); } } // Orange类实现了Fruit接口 class Orange implements Fruit{ @Override public void eat() { System.out.println("eat orange!"); } } // 定义工厂类 class Factory{ public static Fruit getInstance(String className){ Fruit f = null; //定义接口对象 if("apple".equals(className)){ //判断是哪个类的标记 f = new Apple(); } if("orange".equals(className)){ //判断是哪个类的标记 f = new Orange(); } return f; } } public class factory { public static void main(String[] args) { Fruit f = null; //定义接口对象 f = Factory.getInstance("apple"); //通过工厂取得实例 f.eat(); //调用方法 } }
2.将反射应用在工厂模式上
为了能不修改工厂方法
interface Fruit{ public void eat(); } class Apple implements Fruit{ @Override public void eat() { System.out.println("eat apple!"); } } class Orange implements Fruit{ @Override public void eat() { System.out.println("eat orange!"); } } // 定义工厂类 class Factory{ public static Fruit getInstance(String className){ Fruit f = null; //定义接口对象 try{ f = (Fruit)Class.forName(className).newInstance(); //实例化对象 }catch(Exception e){ e.printStackTrace(); } return f; } } public class factory { public static void main(String[] args) { Fruit f = null; //定义接口对象 f = Factory.getInstance("Apple"); //通过工厂取得实例 f.eat(); //调用方法 } }
3.结合属性文件的工厂模式
本文只发表于博客园和tonglin0325的博客,作者:tonglin0325,转载请注明原文链接:https://www.cnblogs.com/tonglin0325/p/5241284.html