设计模式-创建型设计模式-03.工厂方法(php)

设计模式类型

创建型设计模式

设计模式名称

工厂方法

UML角色

设计模式-创建型设计模式-03.工厂方法(php)

应用场景

1、客户端在使用某个产品时,清楚的知道应该使用哪个具体的工厂服务,实例化该具体的工厂,生产出具体的产品来。
2、只需要一种产品,而客户端不想知道也不需要知道究竟哪个工厂生产的,即最终选择哪个具体工厂的决定权在生产者一方,生产者根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策的过程对于客户端来说是透明的。

优缺点

优点

1、利用工厂方法类区创建具体的产品对象,隐藏了具体产品对象的创建细节,客户端只需关心具体产品对应的具体工厂
2、遵守开闭原则。加入新的产品类时,只需要同时加入工厂类就可以实现扩展,无需修改原来的代码。

缺点

1、随着产品种类的数量增长,工厂类也会随之增加,将不利于系统的维护,增加系统的编译和运行的开销。

git地址:

https://github.com/wonlon/Design-patterns