zoukankan      html  css  js  c++  java
  • 工厂模式三

    工厂模式三

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

        }
    }

  • 相关阅读:
    国内高通量基因测序公司成立 时间表
    递推法(归纳法)
    1. 基础知识 (直方图 柱状图 正态分布 模型 抽样分布 )
    1. 基础概念 (统计分布 抽样 置信区间 标准差)
    史上最全 | 39个RNAseq分析工具与对比
    转录组分析工具大比拼 (完整翻译版)
    C#、.NET Framework、CLR的关系
    C#程序集及程序集概念介绍
    SSM处理 No 'Access-Control-Allow-Origin' header is present on the requested resource 问题
    mybatis字符#与字符$的区别
  • 原文地址:https://www.cnblogs.com/zhxiaomiao/p/1409943.html
Copyright © 2011-2022 走看看