创建型模式(一)ABSTRACT FACTORY(抽象工厂)-对象创建型模式

1.意图

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

2.别名

Kit

3.动机

我的工厂需要生产的产品是一系列的对象,而不是一个单一的对象时需要抽象工厂来解决。
首先我们先来了解俩个概念

1)产品等级结构:即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电视机是父类,而具体品牌的电视机是其子类。
2) 产品族:在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品,如海尔电器工厂生产的海尔电视机、海尔电冰箱,海尔电视机位于电视机产品等级结构中,海尔电冰箱位于电冰箱产品等级结构中。
产品族与产品等级结构示意图见如下:
这里写图片描述
举一个例子
这里写图片描述
抽象工厂是为了一个产品族而进行生产的

4.适用性

在以下情况使用Abstract Factory模式

  • 一个系统要独立于它的产品的创建,组合,表示时。
  • 一个系统要由多个产品系列中的一个来配置。
  • 当你要强调一系列相关产品对象的设计以便进行联合使用时。
  • 当你提供一个产品类库时,而只想显示他们的接口而不是实现时。

5.结构

这里写图片描述

6.参与者

  • AbstractFactory 声明一个创建抽象产品对象的操作接口
  • ConcreteFactory 实现创建具体产品对象的操作
  • AbstractProduct 为一类产品对象声明一个接口
  • ConcretePrduct 定义一个将被相应的具体工厂创建的产品对象,实现AbstractProduct接口
  • Client 仅使用有AbstractFacotory和AbstractProduct类声明的接口。

7.协作

通常在运行时创建一个ConcreteFactory类的实例。来创建特定的产品对象。创建不同的对象要用不同的工厂。

8.效果

  1. 它分离了具体的类。你只需要控制创建对象的类,用它来创建对应的你需要的产品,而不需要知道它是怎么创建的。
  2. 它使得易于交换产品系列。在更换一系列产品时,只需要改变具体的工厂就可以改变,
  3. 它有利于产品的一致性。它可以保证使用应用的时候使用的是一个系列的产品来协调工作
  4. 难以支持新种类的产品。

9.实现

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章