原書中給出了
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
靜靜的流水 閱讀(434)
評論(1) 編輯 收藏 引用 所屬分類:
Design Patterns