1、什么是工厂方法
工厂方法是简单工厂的进一步的延伸,解决了工厂方法违反了开闭原则的问题。
定义了一个创建对象的接口,但由子类决定要实例化哪个类。工厂方法把实例化操作推迟到子类。
工厂方法模式使用了继承。
2、工厂方法的代码实现
public class SimpleFactory {
public Product createProduct(int type) {
if (type == 1) {
return new ConcreteProduct1();
} else if (type == 2) {
return new ConcreteProduct2();
}
return new ConcreteProduct();
}
}
public class Client {
public static void main(String[] args) {
SimpleFactory simpleFactory = new SimpleFactory();
Product product = simpleFactory.createProduct(1);
// do something with the product
}
}
3、工厂方法的优缺点
特点:
- 一个产品对应一个工厂类
- 用于生产某种类型产品
优点:
- 客户端只需要关注具体的工厂,不需要关注创建的细节
- 添加新产品只需添加相应工厂类,符合开闭原则
- 创建对象的细节完全封装在具体的工厂内部,所有的具体工厂都继承了自己的父类,完美的体现了多态性
缺点:
- 在增加新的产品时,也必须增加新的工厂类,会带来额外的开销
- 产品多时,工厂泛滥