创建型设计模式.抽象工厂模式

一、概念

1.1、定义

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂,该超级工厂又称为其他工厂的工厂。提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。


Uploading SimpleFactory_863926.png . . .
  • AbstractFactory,抽象工厂类,定义工厂能够生产哪些产品,即产品簇。
  • ConcreteFactory,具体工厂类:根据不同的需求扩展不同产品簇
  • AbstractProduct,抽象产品类:产品特性抽象
  • Product,具体产品类:根据不同需求创建不同产品
1.2、解决的问题
  • 问题分析:工厂模式下,一个工厂只生成一种产品。但是有时候我们需要一个工厂可以提供多个产品对象,而不是单一的产品对象。

  • 模式解决思路:在工厂模式下面,修改抽象工厂基类,让一个工厂支持创建多个的产品方法接口。

二、模式的应用和优缺点

2.1、应用场景
  • 应用场景:
    1、QQ 换皮肤,一整套一起换。
    2、生成不同操作系统的程序。
2.2、优缺点
  • 优点:
    1、抽象工厂模式隔离了具体类的生成,使得客户并不需要知道什么被创建。由于这种隔离,更换一个具体工厂就变得相对容易。所有的具体工厂都实现了抽象工厂中定义的那些公共接口,因此只需改变具体工厂的实例,就可以在某种程度上改变整个软件系统的行为。另外,应用抽象工厂模式可以实现高内聚低耦合的设计目的,因此抽象工厂模式得到了广泛的应用。
    2、当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象。这对一些需要根据当前环境来决定其行为的软件系统来说,是一种非常实用的设计模式。

  • 缺点:
    由于AbstractFactory需要定义好能够生产的哪些种类的产品,相当于定义好产品线,如果后期需要扩展产品线,则没办法实现。

其他

三种工厂模式的区别:
  • 简单工厂:根据key、type、字符串等命令来创建对应的产品。
  • 工厂方法:抽象工厂接口或者基类,多态工厂;实现无限的扩充对应的产品和工厂,一个工厂一个产品。
  • 抽象工厂:一个工厂具有生成多种产品的能力,而不仅局限与单一产品。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容