【重温设计模式】之002简单工厂模式
简单工厂模式
基本原理
含义
简单工厂模式又叫静态方法模式(因为工厂类定义了一个静态方法)。
在现实生活中,工厂是生产产品的,
同样的,在设计模式中,一个负责生产“对象”产品的类就是工厂类。
解决的问题
将 “类实例化的操作” 和 “使用对象的操作”分开,让使用者不用知道具体参数就可以实例化出所需要的“产品”类。
言外意:
将 铅笔的生产 和 使用铅笔 分开, 使用者只关注如何使用铅笔,而并不关注铅笔是如何生产的。
即使用者可直接消费产品而不需要知道其生产的细节。
组成部分
组成 | 关系 | 作用 |
---|---|---|
产品标准 | 具体产品的父类 | 描述产品的公共接口 |
具体产品 | 产品标准的具体实现类 | 描述生产的具体产品 |
工厂类 | 被外界调用 | 根据传入的不同参数而创建不同具体产品类的实例 |
UML类图
使用步骤
- 创建产品标准 (描述产品的公共接口)
- 创建具体产品类 (描述生产的具体产品)
- 创建工厂类(通过创建静态方法根据传入不同参数从而创建不同具体产品类的实例)
- 外界通过调用工厂类的静态方法,根据传入不同参数从而创建不同具体产品类的实例
优点
将 创建产品的工作 与 使用产品的工作 分离开来,实现了解耦。
将 初始化实例的工作 放在了工厂类进行,容易进行维护。
面向接口编程,而不是面向对象。
缺点
工厂类集中了所有实例(产品)的创建逻辑,一旦工厂类不能正常工作,整个系统都将受到影响。
一旦增加新的产品,就不得不修改工厂类的逻辑,违背了“开闭原则”。
适用场景
- 当使用者只知道传入的参数,而不关心对象的创建细节时。
- 当工厂类负责创建的对象(产品)比较少时。
总结
尽信书不如无书,任何脱离实际业务的架构都是在耍流氓;
所谓原则,只是为了更好地为我们服务;
具体如何应用需要我们在业务实践中灵活把控。