• factory工厂模式之简单工厂SimpleFactory


    简单工厂(Simple Factory)
      又叫静态工厂,是工厂模式三中状态中结构最为简单的。
    1.主要有一个静态方法,用来接受参数,并根据参数来决定返回实现同一接口的不同类的实例。
    2.或者针对每个产品,写一个对应的生产该产品的方法

    代码解释:

    1.创建2个产品:android手机、Apple手机

    public class Android implements Product{
    
        public Android() {
            System.out.println("生产一个Android手机...");
        }
    }
    public class Apple implements Product{
    
        public Apple() {
            System.out.println("生产一个Apple手机...");
        }
    }

    2.创建产品生产工厂

    public class SimpleFactory {
        
        /**
         * 简单工厂,生产一个苹果手机
         */
        public Product processApple(){
            return new Apple();
        }
        
        /**
         * 简单工厂,生产一个苹果手机
         */
        public Product processAndroid(){
            return new Android();
        }
    }

      产品工厂也可以这样写:

    public class SimpleFactory2 {
        
        /**
         * 简单工厂,生产一个产品
         * @return
         */
        public static Product processProduct(String name){
            if(name.equals("apple")){
                return new Apple();
            }else if(name.equals("android")){
                return new Android();
            }else{
                System.out.println("没有该产品");
                return null;
            }
        }
    }

    3.客户端访问(Test测试)

    SimpleFactory factory = new SimpleFactory();
            
            //如果用户想要一个Apple手机
            Product apple = factory.processApple();
            //如果用户想要一个Android手机
            Product android = factory.processAndroid();

      若为第二种静态工厂形式:

    -----------------添加参数的工厂---------------------
    //生产一个android手机
    SimpleFactory2.processProduct("android");


     缺陷:
     首先,我们每次想要增加一种新产品的时候,都必须修改SimpleFactory的原代码。
     其次,当我们拥有很多很多产品的时候,而且产品之间又存在复杂的层次关系的时候, 这个类必须拥有复杂的逻辑判断能力:

      if(A) ---> 生产A产品

      else if(B) ---> 生产B产品

      else... ---> 生产...

    或写很多对应的生产该产品的方法:

      public void processA()...

      public void processB()...

      ...

     其代码量也将不断地激增,这对以后的维护简直就是恐怖两个字...
     还有就是整个系统都严重依赖SimpleFactory类,只要SimpleFactory类一出问题, 系统就进入不能工作的状态,这也是最为致命的一点....

    ---> 

    逃避不一定躲得过,面对不一定最难过
  • 相关阅读:
    oracle实验13:单行函数-数字函数
    oracle实验12:单行函数-字符函数
    oracle实验41:编写存储过程
    oracle实验40:编写函数
    oracle实验31:使用PL/SQL,书写一个最简单的块
    oracle实验9-11:使用where和order by子句
    oracle实验6-8:关于null值,列的别名,去掉重复行
    oracle实验5:查询当前用户的所有表和视图
    MD5
    时间戳 日期 转换
  • 原文地址:https://www.cnblogs.com/yangzhenlong/p/5152365.html
Copyright © 2020-2023  润新知