3.1 ABSTRACT FACTORY(抽象工厂) — 对象创

2017-12-30  本文已影响12人  10xjzheng
1.意图

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

2.别名

Kit

3.动机

考虑一个支持多种视感标准的用户界面工具包,不同的视感风格为诸如滚动条、窗口和按钮等用户界面“窗口组件”定义不同的外观和行为。为保证视感风格标准间的可移植性,一个应用不应该为一个特定的视感外观硬编码它的窗口组件。在整个应用中实例化特定视感风格的窗口组件类将使得以后很难改变视感风格。

为解决这一问题我们可以定义一个抽象的WidgetFactory类,这个类声明了一个用来创建每一类基本窗口组件的接口。每一类窗口组件都有一个抽象类,而具体子类则实现了窗口组件对象的操作。客户调用这些操作以获得窗口组件实例,但客户不知道他们正在使用的是哪些具体类。这样客户就不依赖于一般的视感风格,如下图所示:


image.png

每一种视感标准都对应于一个具体的WidgetFactory子类。每一个子类实现那些用于创建合适视感风格的窗口组件操作。

4.适用性

在以下情况可以使用Abstract Factory模式
- 一个系统要独立于它的产品的创建、组合和表示时;
- 一个系统要由多种产品系列中的一个来配置时;
- 当你要强调一系列相关的产品对象的设计以便进行联合使用时;
- 当你提供一个产品类库,而只想显示它们的接口而不是实现时。

5.结构
image.png
6.参与者
7.协作
8. AbstractFactory模式有下面的一些优点和缺点:
9.实现

下面是实现Abstract Factory模式的一些有用技术:

10. 代码示例

github地址

上一篇下一篇

猜你喜欢

热点阅读