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

1. 意 图

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

2. 别 名

K i t

3. 动 机

考虑一个支持多种视感(l o o k - a n d - f e e l)标准的用户界面工具包,例如M o t i f和
Presentation Manager。不同的视感风格为诸如滚动条、窗口和按钮等用户界面“窗口组件”
定义不同的外观和行为。为保证视感风格标准间的可移植性,一个应用不应该为一个特定的
视感外观硬编码它的窗口组件。在整个应用中实例化特定视感风格的窗口组件类将使得以后
很难改变视感风格。
为解决这一问题我们可以定义一个抽象的 Wi d g e t F a c t o r y类,这个类声明了一个用来创建
每一类基本窗口组件的接口。每一类窗口组件都有一个抽象类,而具体子类则实现了窗口组
件的特定视感风格。对于每一个抽象窗口组件类, Wi d g e t F a c t o r y接口都有一个返回新窗口组
件对象的操作。客户调用这些操作以获得窗口组件实例,但客户并不知道他们正在使用的是

哪些具体类。这样客户就不依赖于一般的视感风格


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

[1]:将工厂作为单件 一个应用中一般每个产品系列只需一个 C o n c r e t e F a c t o r y的实例。因此
工厂通常最好实现为一个S i n g l e t o n(3 . 5)

[2]:A b s t r a c t F a c t o r y仅声明一个创建产品的 接口 ,真正创建产品是由
C o n c r e t e P r o d u c t子类实现的。最通常的一个办法是为每一个产品定义一个工厂方法(参见
Factory Method(3 . 3))。一个具体的工厂将为每个产品重定义该工厂方法以指定产品。虽然
这样的实现很简单,但它却要求每个产品系列都要有一个新的具体工厂子类,即使这些产品
系列的差别很小。

如果有多个可能的产品系列,具体工厂也可以使用 P r o t o t y p e(3 . 4)模式来实现。具体工
厂使用产品系列中每一个产品的原型实例来初始化,且它通过复制它的原型来创建新的产品。
在基于原型的方法中,使得不是每个新的产品系列都需要一个新的具体工厂类。


5. 相关模式

A b s t r a c t F a c t o r y类通常用工厂方法( Factory Method(3 . 3))实现,但它们也可以用
P r o t o t y p e实现。
一个具体的工厂通常是一个单件( S i n g l e t o n(3 . 5))。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值