posts - 10,  comments - 26,  trackbacks - 0

原书中给出了 AbstractFactory 范式的三种实现方式:

1、 作为一个 Singleton 实现;

这种方式的说明将在说到 Singleton 范式补充。

2、 创建系列产品;

在这种方式下又包含两种子方式:

a)        使用 Factory Method 范式;

简单地说,使用这种方式的实现就是定义一个接口,针对自己定义的产品( widget )集合中每个类型定义一个创建方法,并在其子类中提供实现。

b)        使用 Prototype 范式;

原文 Implementation 部分

The concrete factory is initialized with a prototypical instance of each product in the family, and it creates a new product by cloning its prototype .

这句话的意思是说,对在同一个产品簇的产品,当它们的工厂被实例化时,它们同时也被实例化到这个工厂中,并在客户需要其中某个类型的产品实例时,使用 clone 方式创建一个新的对象给客户。

原本 Implementation 部分

The Prototype-based approach eliminates the need for a new concrete factory class for each new product family . ”这句话是上句引文的下一句。

我个人认为,这句话的本意是针对 a )方法而言的;但却与它的上一句话相互矛盾。因为上一句说这个方法是针对“ in the family ”的,而本句是针对“ a new concrete factory ”和“ new product family ”的。稍微有点英语常识的人都知道,“ the ”是定冠词,一般用于特指;而“ a ”在这里表示任意。因此我认为是说不通的,换句话说,使用基于 Prototype 的实现仍然不能消除一个具体的工厂针对一个具体产品簇的限制。即使可以,一般应用在该产品集合包含较少的产品类型时使用。

3、 定义可扩展的工厂;

这种方式针对自己定义的产品( widget )集合不可预知的类型扩展,提供一种叠加的方式,以便扩展自己的工厂来生产被扩展的产品类型。

posted on 2006-06-23 15:31 静静的流水 阅读(420) 评论(1)  编辑 收藏 引用 所属分类: Design Patterns

FeedBack:
# re: 设计范式笔记-AbstractFactory(二)
2007-12-18 12:32 | 秦歌
以后多写点  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(1)

随笔分类(9)

随笔档案(10)

文章分类(7)

文章档案(7)

收藏夹(1)

Articles

C++ Template

Cpp News

Open Source C++ Compiler

友情链接-Blogs

搜索

  •  

积分与排名

  • 积分 - 8425
  • 排名 - 1263

最新评论