1、什么是简单工厂
简单工厂模式是在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口。
Tips:简单工厂属于创建型设计模式,但是不属于二十三种设计模式。
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、简单工厂的优缺点
特点:
- 工厂类包含必要的逻辑判断来选择生产具体产品
- 用于生产单个产品
优点:
- 让简单工厂类来决定应该用哪个具体产品类来实例化,实现了对象的创建和使用的分离,实现解耦
- 在不修改任何客户端代码的情况下更换和增加新的具体产品类,在一定程度上提高了系统的灵活性
缺点:
- 添加新产品类需要修改工厂类,违背开闭原则
- 工厂类的职责过重,简单工厂中包含很多的逻辑判断语句,它一旦有问题,整个系统都要出问题
- 简单工厂的静态方法,使得工厂角色无法形成基于继承的实现(失去了多态)