简介

简单工厂模式又称静态工厂方法模式,简单工厂模式抽象的理解就是通过工厂类传不同参数达到初始出化想要的“产品”的模式,这种方式可以不直接拿到产品,而是给工厂传递不同参数来拿到产品。这样不管创建什么“产品”对象都可以通过“工厂”,即使那些产品更改了,同样可以使用工厂,从某种意义上来说实现解耦

代码实现
// 产品接口
public interface ProductImpl {
    void say();
}
// 电脑(实现接口)
public class Desktop implements ProductImpl {
    @Override
    public void say() {
        System.out.println("电脑产品");
    }
}
// 手机(实现接口)
public class Moblie implements ProductImpl {
    @Override
    public void say() {
        System.out.println("手机产品");
    }
}
// 工厂类
public class ProductFactory {
    public static final String DESKTOP = "desktop";
    public static final String MOBILE = "mobile";
    public static Product createProduct(String str) {
        switch (str) {
            case "desktop" : 
                return new Desktop();
                break;
            case "mobile" :
                return new Mobile();
                break;
            default :
            	throw new RuntimeException("找不到类型");
                break;
        }
    }
}
// 使用工厂类来创建需要的产品
Product product = ProductFactory.createProduct(ProductFactory.DESKTOP);
product.say();
优缺点

优点

  • 使用者无需关心实例是如何创建的,只用关心实例通过工厂传递指定参数使用就行,实现了解耦
  • 将所有产品实例化的工作都放在了工厂中,让代码好维护

缺点

  • 工厂一旦不运作,很多地方都会受到影响
  • 不断往工厂中添加“产品”,增加了它的复杂度
应用场景

“产品”较少,创建产品过程较复杂而不是简单的 new 一下的时候