为什么使用工厂模式?
工厂模式是创建在对象的上面,就是把创建对象的过程封装起来,这样可以产生一个新的对象。减少代码进行复制粘贴,耦合关系重,牵一发动其他部分代码。
1、含义
- 简单工厂模式又叫静态方法模式
- 显示生活中,工厂是生产产品的;同样在设计模式中,简单工厂模式我们可以理解为负责生产对象的一个类,称为“工厂类”;
2、模式组成
组成(角色) | 关系 | 作用 |
抽象产品(product) | 具体产品的父类 | 描述产品的公共接口 |
具体产品(concrete product ) | 抽象产品的子类;工厂类创建的目标类 | 描述生产的具体产品 |
工厂(creator) | 被外界调用 | 传入不同的参数创建不同具体产品类的实例 |
3、典型事例:
php可能要链接mysql,也可能要链接sqlserver,还有其他数据库,那么就要做一个抽象的数据库类。
举个栗子:方便面产地描述接口,也就是抽象产品
具体的产品类 [康师傅]
今麦郎
准备做完了,来了解一下方便面的具体产地 【工厂】
假如我想了解康师傅面
输出: 康师傅 -- 中国台湾
4、优点
- 将创建实例的工作与使用实例的工作分开,使用者不必关系类对象如何创建,实现了解耦;
- 把初始化实例时的工作放到工厂里进行,使代码更容易维护。更符合面向对象的原则
5、缺点:
- 扩展性差(无法灵活的扩展和维护),违背了开闭原则 [ 对于修改时封闭的,对于扩展是开放的 ]
- 工厂类集中了所有的实例创建的逻辑,一旦工厂不能正常工作,整个系统都会受到影响。
- 静态方法不能被继承和重写,会造成工厂角色无法形成基于继承的等级结构。
6、应用场景:
客户如果只知道传入工厂类的参数,对于如何创建对象的逻辑不关心时;
工厂类负责创建的对象比较少时;