定义
简单工厂模式
严格来说不属于 GoF 的 23 种设计模式,而是一种编程习惯。
定义一个工厂类,根据传入的参数,动态决定创建哪一个产品类的实例。
一个具体工厂,多个抽象产品,多个具体产品。
实现
public interface Product {
}
public class ProductA implements Product {
}
public class ProductB implements Product {
}
public class ProductFactory {
public static Product createProduct(String type) {
if("ProductA".equalsIgnoreCase(type)) {
return new ProductA();
} else if("ProductB".equalsIgnoreCase(type)) {
return new ProductB();
}
return null;
}
}优点:
- 封装:将创建对象的过程封装起来,调用方不需要关心对象创建的过程。
- 解耦:调用者只需要使用实例而不需要创建实例。
缺点: - 违反开闭原则:如果需要添加新的产品,需要修改工厂类的创建方法。
- 无法继承:使用的静态工厂方法不能被继承和重写,无法扩展子工厂。