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

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