抽象工廠(Abstract-Factory)模式.doc

抽象工廠(Abstract-Factory)模式.doc

ID:52166548

大?。?25.50 KB

頁數(shù):12頁

時(shí)間:2020-03-23

抽象工廠(Abstract-Factory)模式.doc_第1頁
抽象工廠(Abstract-Factory)模式.doc_第2頁
抽象工廠(Abstract-Factory)模式.doc_第3頁
抽象工廠(Abstract-Factory)模式.doc_第4頁
抽象工廠(Abstract-Factory)模式.doc_第5頁
資源描述:

《抽象工廠(Abstract-Factory)模式.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、一、?抽象工廠(AbstractFactory)模式抽象工廠模式是所有形態(tài)的工廠模式中最為抽象和最具一般性的一種形態(tài)。為了方便引進(jìn)抽象工廠模式,引進(jìn)一個(gè)新概念:產(chǎn)品族(ProductFamily)。所謂產(chǎn)品族,是指位于不同產(chǎn)品等級結(jié)構(gòu),功能相關(guān)聯(lián)的產(chǎn)品組成的家族。如圖:?圖中一共有四個(gè)產(chǎn)品族,分布于三個(gè)不同的產(chǎn)品等級結(jié)構(gòu)中。只要指明一個(gè)產(chǎn)品所處的產(chǎn)品族以及它所屬的等級結(jié)構(gòu),就可以唯一的確定這個(gè)產(chǎn)品。引進(jìn)抽象工廠模式所謂的抽象工廠是指一個(gè)工廠等級結(jié)構(gòu)可以創(chuàng)建出分屬于不同產(chǎn)品等級結(jié)構(gòu)的一個(gè)產(chǎn)品族中的

2、所有對象。如果用圖來描述的話,如下圖:?二、?AbstractFactory模式的結(jié)構(gòu):?圖中描述的東西用產(chǎn)品族描述如下:?抽象工廠(AbstractFactory)角色:擔(dān)任這個(gè)角色的是工廠方法模式的核心,它是與應(yīng)用系統(tǒng)商業(yè)邏輯無關(guān)的。具體工廠(ConcreteFactory)角色:這個(gè)角色直接在客戶端的調(diào)用下創(chuàng)建產(chǎn)品的實(shí)例。這個(gè)角色含有選擇合適的產(chǎn)品對象的邏輯,而這個(gè)邏輯是與應(yīng)用系統(tǒng)的商業(yè)邏輯緊密相關(guān)的。抽象產(chǎn)品(AbstractProduct)角色:擔(dān)任這個(gè)角色的類是工廠方法模式所創(chuàng)建的對

3、象的父類,或它們共同擁有的接口。具體產(chǎn)品(ConcreteProduct)角色:抽象工廠模式所創(chuàng)建的任何產(chǎn)品對象都是某一個(gè)具體產(chǎn)品類的實(shí)例。這是客戶端最終需要的東西,其內(nèi)部一定充滿了應(yīng)用系統(tǒng)的商業(yè)邏輯。三、?程序舉例:該程序演示了抽象工廠的結(jié)構(gòu),本身不具有任何實(shí)際價(jià)值。//?Abstract?Factory?pattern?--?Structural?example??using?System;//?"AbstractFactory"abstract?class?AbstractFactory{

4、??//?Methods??abstract?public?AbstractProductA?CreateProductA();??abstract?public?AbstractProductB?CreateProductB();}//?"ConcreteFactory1"class?ConcreteFactory1?:?AbstractFactory{??//?Methods??override?public?AbstractProductA?CreateProductA()??{????r

5、eturn?new?ProductA1();??}??override?public?AbstractProductB?CreateProductB()??{????return?new?ProductB1();??}}//?"ConcreteFactory2"class?ConcreteFactory2?:?AbstractFactory{??//?Methods??override?public?AbstractProductA?CreateProductA()??{????return?n

6、ew?ProductA2();??}??override?public?AbstractProductB?CreateProductB()??{????return?new?ProductB2();??}}//?"AbstractProductA"abstract?class?AbstractProductA{}//?"AbstractProductB"abstract?class?AbstractProductB{??//?Methods??abstract?public?void?Inter

7、act(?AbstractProductA?a?);}//?"ProductA1"class?ProductA1?:?AbstractProductA{}//?"ProductB1"class?ProductB1?:?AbstractProductB{??//?Methods??override?public?void?Interact(?AbstractProductA?a?)??{????Console.WriteLine(?this?+?"?interacts?with?"?+?a?);?

8、?}}//?"ProductA2"class?ProductA2?:?AbstractProductA{}//?"ProductB2"class?ProductB2?:?AbstractProductB{??//?Methods??override?public?void?Interact(?AbstractProductA?a?)??{????Console.WriteLine(?this?+?"?interacts?with?"?+?a?);??}}//?"Client"?-?the?int

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時(shí)可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。