首页 > 其他 > 详细

设计模式:工厂模式

时间:2019-10-25 20:57:50      阅读:97      评论:0      收藏:0      [点我收藏+]

简单工厂

简单工厂:简单工厂并非设计模式的一种。

UML如下图所示

技术分享图片

说明

主要分为两个角色:ProductFactoryProduct是产品的抽象接口,定义了产品的行为,具体的产品会实现这个类型,定义特定的行为。而Factory是工厂类,主要负责产品的创建工作,并且统一返回Product这个接口,而非具体产品。

优势

考虑以下场景:假设我们有一个Consumer需要依赖Product

  • 首先我们将Product的创建工作从Consumer中分离出来交给了FactoryConsumer只需要关注如何使用Product。让每个角色可以各司其职,符合单一职责原则
  • 另一方面,因为ConsumerProduct中间通过Factory联系,且Factory并没有返回具体的Product,那么假设Consumer依赖的产品发生变换,或是添加了新的Product,对Consumer的修改相对来说较小。降低了ConsumerProduct耦合

工厂方法模式

UML类图:

技术分享图片

说明

工厂方法模式中的工厂只是一个抽象的接口,具体的产品创建过程在具体的子类中实现。每种产品都有自己的工厂类去创建。

优势

相较于简单工厂,工厂方法模式的优势在于当Product的种类不断增多时,Factory不再需要不断的修改自己创建Product的方法。只需要在增加Product时,同时增加相应的Factory即可。比较好的满足了开闭原则

抽象工厂模式

UML类图:

技术分享图片

说明

抽象工厂方法可以针对产品族进行管理,确保一系列的组件能够互相匹配。

优势

抽象工厂屏蔽了Consumer对于底层一组Product的感知,只需修改一个工厂类,就有可能调整整个Consumer的行为。对于需要依赖一系列组件工作的客户端来说,抽象工厂做到了高内聚低耦合

劣势

抽象工厂的劣势是一套组件中需要增加一个新组建时,需要修改接口中的方法,因此影响了所有工厂的实现类。

工厂模式的退化

  • 当工厂的接口和实现合并为一个类时,工厂方法模式退化成了简单工厂
  • 抽象工厂负责的产品只有一个时,变退化成了工厂方法模式

设计模式:工厂模式

原文:https://www.cnblogs.com/insaneXs/p/11740609.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!