概念理解
-
定义:超级工厂创建工厂的封装
Uploading SimpleFactory_863926.png . . .
AbstractFactory:抽象工厂,定义工厂能够生产哪些产品,即产品簇。
ConcreteFactory:具体工厂,根据不同的需求扩展不同产品簇
AbstractProduct:抽象产品,产品特性抽象
Product:具体产品,根据不同需求创建不同产品
应用和优缺点
-
解决问题:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。例如创建产品簇。
-
应用场景:
1、QQ 换皮肤,一整套一起换。
2、生成不同操作系统的程序。 -
优点:
1、抽象工厂模式隔离了具体类的生成,使得客户并不需要知道什么被创建。由于这种隔离,更换一个具体工厂就变得相对容易。所有的具体工厂都实现了抽象工厂中定义的那些公共接口,因此只需改变具体工厂的实例,就可以在某种程度上改变整个软件系统的行为。另外,应用抽象工厂模式可以实现高内聚低耦合的设计目的,因此抽象工厂模式得到了广泛的应用。
2、当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象。这对一些需要根据当前环境来决定其行为的软件系统来说,是一种非常实用的设计模式。 -
缺点:
由于AbstractFactory需要定义好能够生产的哪些种类的产品,相当于定义好产品线,如果后期需要扩展产品线,则没办法实现。
三思而后行
- 三种工厂模式的区别:
- 简单工厂:根据key、type、字符串等命令来创建对应的产品。
- 工厂方法:抽象工厂接口或者基类,多态工厂;实现无限的扩充对应的产品和工厂,一个工厂一个产品。
- 抽象工厂:一个工厂具有生成多种产品的能力,而不仅局限与单一产品。
网友评论