工厂模式三

工厂模式三

demo3:

下面可以看到修改后的factory以后扩充类时不用修改即可

新的问题:
 *      在项目中可能用几十个类同时实现了一个接口,用户是如何知道已有的接口子类呢?
 *      我们 可以用代号-->子类的包.类名称,我们通过代号去访问,再给用户一个文件列表给用户列出全部的代码--子类的映射

Code
class Factory {
    
public static Fruit getFruitInstance(String type) {
        Fruit f 
= null;

            
//通过Class类来完成 通过包名和类名来实例化这个类
        
//这个方法返回的是object需要一个转型
        try {
            f
=(Fruit)Class.forName("com.miao.factoryDemo3"+type).newInstance();
        } 
catch (Exception e) {
            
            e.printStackTrace();
        }
        
return f;
    }
}

public class factoryDemo3 {
    
public static void main(String args[]) {
        
// 以下是以前紧密耦合的工厂使用方法,子类与父类紧紧结合
        /**
         * Fruit f=new Apple(); f.grow(); f.pick();
         
*/
        
// //////////////////////////////
        /**
         * //下面用上面的类Factory来实现 Fruit f=Factory.getFruitInstance(); f.grow();
         * f.pick(); /////////////////////////////
         
*/

        
// demo2 中对其进行修改
        if (args.length == 0) {
            System.out.println(
"请输入要使用的类名称:");
            System.exit(
1);
        }

        Fruit f 
= Factory.getFruitInstance(args[0]);
        
if (f != null) {
            f.grow();
            f.pick();
        } 
else {
            System.out.println(
"没有发现这个类型。");
        }

    }
}

posted @ 2009-03-12 20:33  xiaomiao  阅读(131)  评论(0编辑  收藏  举报