java中的反射三(反射机制深入---工厂设计模式)

来源:互联网 发布:数据终端设备dte 编辑:程序博客网 时间:2024/05/23 11:28
工厂设计模式最大的好处就是可以在应用进行解耦和操作。
下面例子:
创建一个接口并其实现
interface Fruit{public void eat() ;// 吃水果}class Apple implements Fruit{public void eat(){// 覆写eat()方法System.out.println("** 吃苹果");}};class Orange implements Fruit{public void eat(){System.out.println("** 吃橘子") ;}};

通过反射机制创建一个简单工厂
class Factory{public static Fruit getInstance(String className){Fruit fruit = null ;try{fruit = (Fruit)Class.forName(className).newInstance() ;}catch(Exception e){e.printStackTrace() ;}return fruit ;}};public class FactoryDemo01{public static void main(String args[]){Fruit f = Factory.getInstance("org.lxh.demo15.factorydemo01.Apple") ;if(f!=null){f.eat() ;}}};
 
对上面的工厂进行优化:结合属性文件的工厂模式
 
class Init{public static Properties getPro(){Properties pro = new Properties() ;File f = new File("d:\\fruit.properties") ;// 找到属性文件try{if(f.exists()){// 文件存在pro.load(new FileInputStream(f)) ;// 读取属性}else{pro.setProperty("apple","org.lxh.demo15.factorydemo02.Apple") ;pro.setProperty("orange","org.lxh.demo15.factorydemo02.Orange") ;pro.store(new FileOutputStream(f),"FRUIT CLASS") ;}}catch(Exception e){}return pro ;}};class Factory{public static Fruit getInstance(String className){Fruit fruit = null ;try{fruit = (Fruit)Class.forName(className).newInstance() ;}catch(Exception e){e.printStackTrace() ;}return fruit ;}};public class FactoryDemo02{public static void main(String args[]){Properties pro = Init.getPro() ;Fruit f = Factory.getInstance(pro.getProperty("apple")) ;if(f!=null){f.eat() ;}}};
 
 
原创粉丝点击