• 工厂模式三


    工厂模式三

    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(
    "没有发现这个类型。");
            }

        }
    }

  • 相关阅读:
    响应头中的 ETag 值是如何生成的
    http请求状态码
    RPC 和 REST 有什么优劣
    comet 长轮询与 node 实现
    HTTPS 加密
    iterm2 快捷键
    static in C/C++
    03-树3 Tree Traversals Again
    2016.03.19随笔
    03-树2 List Leaves
  • 原文地址:https://www.cnblogs.com/zhxiaomiao/p/1409943.html
Copyright © 2020-2023  润新知