设计模式类型
创建型设计模式
设计模式名称
工厂方法
模式定义
工厂方法模式(Factory Method)属于类的创建型模式,又被称做多态工厂模式。
相比简单工厂模式,引入了创建产品的工厂的接口,把实际创建产品的动作延迟到子类工厂中。
继承了工厂接口的不同的子类工厂,分别负责生产其相对应的产品。
当再有新的产品引入时,原来的工厂都不需要修改,只需要继承工程接口,创建新的工厂类即可。
UML角色
抽象工厂:定义工厂接口
具体的工厂:实现工厂的具体类
抽象的产品:定义了产品抽象的接口
具体的产品:实现了抽象产品接口的具体具体实现类
代码演示完毕,
工厂方法的核心在于引入新的产品时,无需修改(简单工厂中的核心逻辑),只需针对新的产品增加对应的工厂即可,符合开发封闭原则
应用场景
1、客户端在使用某个产品时,清楚的知道应该使用哪个具体的工厂服务,实例化该具体的工厂,生产出具体的产品来。
2、只需要一种产品,而客户端不想知道也不需要知道究竟哪个工厂生产的,即最终选择哪个具体工厂的决定权在生产者一方,生产者根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策的过程对于客户端来说是透明的。
优缺点
优点
1、利用工厂方法类区创建具体的产品对象,隐藏了具体产品对象的创建细节,客户端只需关心具体产品对应的具体工厂
2、遵守开闭原则。加入新的产品类时,只需要同时加入工厂类就可以实现扩展,无需修改原来的代码。
缺点
1、随着产品种类的数量增长,工厂类也会随之增加,将不利于系统的维护,增加系统的编译和运行的开销。
git地址:
https://github.com/wonlon/Design-patterns