Abstract Factory
,這是一個
Object Creational
范式。
原文
Intent
部分:
“
…without specifying their concrete classes
”,即對使用這個對象的用戶,不直接提供
new
操作;
一個對象的類型支持多種標(biāo)準(zhǔn);并滿足用戶在多種標(biāo)準(zhǔn)之間自由地從一種標(biāo)準(zhǔn)轉(zhuǎn)換成另外一種標(biāo)準(zhǔn)。
?
為了實現(xiàn)這個范式,需要為將要實現(xiàn)的
widget
集合定義一個總的工廠抽象類,即:
AbstractFactory
,同時在這個工廠類中為每個
widget
定義一個類似于
CreateXXX
(
Create
表示要執(zhí)行的活動,
XXX
表示被創(chuàng)建的
widget
的類型名稱)的方法;并對要實現(xiàn)的
widget
集合中的每個
widget
定義一個抽象類。
?
原文
Motivation
部分:
“
There’s also an abstract class for each kind of widget, and concrete subclasses implement widgets for specific look-and-feel standards.
”
?

由于對實現(xiàn)每個標(biāo)準(zhǔn)下的widget類型集合需要提供相應(yīng)的WidgetFactory的實現(xiàn),因此用戶需要實例化每個標(biāo)準(zhǔn)下的工廠實現(xiàn)。
為解決這個問題,在Java中存在典型的實現(xiàn)方式。就是定義上圖的上一部分,然后自己實現(xiàn)一個作為默認(rèn)的;然后,在某個地方實現(xiàn)一個靜態(tài)的方法,以實例化真實的WidgetFactory;接下來給應(yīng)用開發(fā)人員提供一個標(biāo)準(zhǔn)的系統(tǒng)屬性,比如-Djava.widget.factory=;這樣可實現(xiàn)靈活的撤換。
posted on 2006-06-21 22:57
靜靜的流水 閱讀(651)
評論(4) 編輯 收藏 引用 所屬分類:
Design Patterns