读《大话设计模式》之抽象工厂模式

2017-10-22  本文已影响10人  梦半觉

一、模式概述:

提供一个创建一系列相关或互相依赖的接口,而无需指定它们具体的类。

先来认识下什么是产品族: 位于不同产品等级结构中,功能相关联的产品组成的家族。

UML图:

抽象工厂模式

二、模式优缺点:

优点:

1、 抽象工厂模式隔离了具体类的生产,使得客户并不需要知道什么被创建。
2、 当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。
3、 增加新的具体工厂和产品族很方便,无须修改已有系统,符合开闭原则。

缺点:

增加新的产品等级结构很复杂,需要修改抽象工厂和所有的具体工厂类,对开闭原则的支持呈现倾斜性。
如果需要增加新的产品树,那么就要新增三个产品类,并且要修改三个工厂类。这样大批量的改动是很丑陋的做法。
所以可以用简单工厂配合反射来改进抽象工厂。

三、模式适用场景:

1、 系统中有多个产品族,而系统一次只可能消费其中一族产品
2、 同属于同一个产品族的产品以其使用。
当需要创建的对象是一系列相互关联或相互依赖的产品族时,便可以使用抽象工厂模式。说的更明白一点,就是一个继承体系中,如果存在着多个等级结构(即存在着多个抽象类),并且分属各个等级结构中的实现类之间存在着一定的关联或者约束,就可以使用抽象工厂模式。假如各个等级结构中的实现类之间不存在关联或约束,则使用多个独立的工厂来对产品进行创建,则更合适一点。

四、模式总结:

提供一个创建一系列相关或互相依赖的接口,而无需指定它们具体的类。
抽象工厂模式的用意为:给客户端提供一个接口,可以创建多个产品族中的产品对象。

上一篇 下一篇

猜你喜欢

热点阅读