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类一出问题, 系统就进入不能工作的状态,这也是最为致命的一点....

---> 

逃避不一定躲得过,面对不一定最难过
原文地址:https://www.cnblogs.com/yangzhenlong/p/5152365.html