Abstract Factory 抽象工厂模式——对象创建型模式。

1.动机

在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作,同时,由于需求的变化,往往存在更多系列对象的创价你工作。

2.定义

一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。

3.用自己的一句话概述

比如多家电脑厂,生产不同的笔记本和台式机,因此将电脑厂继续抽象出来,由调用者调用不同的电脑厂从而生产不用的笔记本和台式机。

4.优点

  • 可以在类的内部对产品族中相关联的多等级产品共同管理,而不必专门引入多个新的类来进行管理。
  • 当增加一个新的产品族时不需要修改原代码,满足开闭原则。

5.缺点

  • 当产品族中需要增加一个新的产品时,所有的工厂类都需要进行修改。

6.使用场景

  • 当需要创建的对象是一系列相互关联或相互依赖的产品族时,如电器工厂中的电视机、洗衣机、空调等。
  • 系统中有多个产品族,但每次只使用其中的某一族产品。如有人只喜欢穿某一个品牌的衣服和鞋。
  • 系统中提供了产品的类库,且所有产品的接口相同,客户端不依赖产品实例的创建细节和内部结构。

7.总结

  • 如果没有应对“多系列对象构建”的需求变化,则没有必要使用抽象工厂模式,这时候使用简单工厂完全可以。
  • “系列对象”指的是在某一特定系列下的对象相互依赖或作用的关系。不同系列的对象之间不能相互依赖。
  • 抽象工厂模式主要优点在于应对“新系列”的需求变动。其缺点在于难以应对“新对象”的需求变动。

0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用 * 标注