简单工厂 Simple Factory
class + creational 类式 创建类
可能是现代编程语言中最常见的设计模式
目的
- 创建对象时不用向用户暴露实例化对象 (开闭原则)
- 涉及到通过通用接口创建对象(依赖倒置原则)
概念
简单工厂模式,也被称为静态工厂方法(Factory Method Pattern)
- 基于不同的参数,可以返回不同的实例类
- 简单工厂模式具体定义了一个专门负责创建其他类的实例的类
- 这些实例往往最终要有同一个父类
模式结构
- 工厂
- 产品:Abstract product role
- 扩展产品:Concrete product role


扩展
- 使用 static 关键字可以使函数和方法便于被访问,并且 memory-efficient,用户 只需要向工厂提供一个参数
- 参数能被存储在如 XML 格式的配置文件当中,减少对源代码的修改
优点
- 将一个对象的创建和使用解耦
- 用户不需要知道产品类,只需要传递参数
- 通过修改配置文档,可以在不修改客户侧代码的情况下扩展产品类,提升了可扩展性
缺陷
- 工厂类的指责相对来说较重
- 当新产品被添加,工厂逻辑必须被 rivised 和 recoded,这破坏了开闭原则
- 增加了系统中类的数量
- 如果使用静态工厂,则工厂不存在很好的继承结构,限制了工厂的扩展性
什么场景该使用工厂模式
- 产品的数量比较少,这样工厂方法不会过于复杂
- 用户只需要产品的参数,不需要关心产品如何被创建