版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章抽象工廠模式劉偉本章教學(xué)內(nèi)容抽象工廠模式模式動(dòng)機(jī)與定義模式結(jié)構(gòu)與分析模式實(shí)例與解析模式效果與應(yīng)用模式擴(kuò)展抽象工廠模式模式動(dòng)機(jī)在工廠方法模式中具體工廠負(fù)責(zé)生產(chǎn)具體的產(chǎn)品,每一個(gè)具體工廠對(duì)應(yīng)一種具體產(chǎn)品,工廠方法也具有唯一性,一般情況下,一個(gè)具體工廠中只有一個(gè)工廠方法或者一組重載的工廠方法。但是有時(shí)候我們需要一個(gè)工廠可以提供多個(gè)產(chǎn)品對(duì)象,而不是單一的產(chǎn)品對(duì)象。抽象工廠模式模式動(dòng)機(jī)為了更清晰地理解工廠方法模式,需要先引入兩個(gè)概念:產(chǎn)品等級(jí)結(jié)構(gòu):產(chǎn)品等級(jí)結(jié)構(gòu)即產(chǎn)品的繼承結(jié)構(gòu),如一個(gè)抽象類是電視機(jī),其子類有海爾電視機(jī)、海信電視機(jī)、TCL電視機(jī),則抽象電視機(jī)與具體品牌的電視機(jī)之間構(gòu)成了一個(gè)產(chǎn)品等級(jí)結(jié)構(gòu),抽象電視機(jī)是父類,而具體品牌的電視機(jī)是其子類。產(chǎn)品族:在抽象工廠模式中,產(chǎn)品族是指由同一個(gè)工廠生產(chǎn)的,位于不同產(chǎn)品等級(jí)結(jié)構(gòu)中的一組產(chǎn)品,如海爾電器工廠生產(chǎn)的海爾電視機(jī)、海爾電冰箱,海爾電視機(jī)位于電視機(jī)產(chǎn)品等級(jí)結(jié)構(gòu)中,海爾電冰箱位于電冰箱產(chǎn)品等級(jí)結(jié)構(gòu)中。抽象工廠模式模式動(dòng)機(jī)產(chǎn)品族與產(chǎn)品等級(jí)結(jié)構(gòu)示意圖
抽象工廠模式模式動(dòng)機(jī)當(dāng)系統(tǒng)所提供的工廠所需生產(chǎn)的具體產(chǎn)品并不是一個(gè)簡(jiǎn)單的對(duì)象,而是多個(gè)位于不同產(chǎn)品等級(jí)結(jié)構(gòu)中屬于不同類型的具體產(chǎn)品時(shí)需要使用抽象工廠模式。抽象工廠模式是所有形式的工廠模式中最為抽象和最具一般性的一種形態(tài)。抽象工廠模式與工廠方法模式最大的區(qū)別在于,工廠方法模式針對(duì)的是一個(gè)產(chǎn)品等級(jí)結(jié)構(gòu),而抽象工廠模式則需要面對(duì)多個(gè)產(chǎn)品等級(jí)結(jié)構(gòu),一個(gè)工廠等級(jí)結(jié)構(gòu)可以負(fù)責(zé)多個(gè)不同產(chǎn)品等級(jí)結(jié)構(gòu)中的產(chǎn)品對(duì)象的創(chuàng)建。當(dāng)一個(gè)工廠等級(jí)結(jié)構(gòu)可以創(chuàng)建出分屬于不同產(chǎn)品等級(jí)結(jié)構(gòu)的一個(gè)產(chǎn)品族中的所有對(duì)象時(shí),抽象工廠模式比工廠方法模式更為簡(jiǎn)單、有效率。抽象工廠模式模式動(dòng)機(jī)抽象工廠模式示意圖抽象工廠模式模式定義
抽象工廠模式(AbstractFactoryPattern):提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無須指定它們具體的類。抽象工廠模式又稱為Kit模式,屬于對(duì)象創(chuàng)建型模式。抽象工廠模式模式定義AbstractFactoryPattern:Provideaninterfaceforcreatingfamiliesofrelatedordependentobjectswithoutspecifyingtheirconcreteclasses.Frequencyofuse:high
抽象工廠模式模式結(jié)構(gòu)抽象工工廠模模式模式結(jié)結(jié)構(gòu)抽象工工廠模模式包包含如如下角角色::AbstractFactory:抽抽象工工廠ConcreteFactory:具具體工工廠AbstractProduct:抽抽象產(chǎn)產(chǎn)品Product:具具體產(chǎn)產(chǎn)品抽象工工廠模模式模式分分析抽象工工廠模模式模式分分析抽象工工廠模模式模式分分析抽象工工廠模模式模式分分析抽象工工廠類類的典典型代代碼如如下::publicabstractclassAbstractFactory{publicabstractAbstractProductAcreateProductA();publicabstractAbstractProductBcreateProductB();}抽象工工廠模模式模式分分析具體工工廠類類的典典型代代碼如如下::publicclassConcreteFactory1extendsAbstractFactory{publicAbstractProductAcreateProductA(){returnnewConcreteProductA1();}publicAbstractProductBcreateProductB(){returnnewConcreteProductB1();}}抽象工工廠模模式模式實(shí)實(shí)例與與解析析實(shí)例一一:電電器工工廠一個(gè)電電器工工廠可可以產(chǎn)產(chǎn)生多多種類類型的的電器器,如如海爾爾工廠廠可以以生產(chǎn)產(chǎn)海爾爾電視視機(jī)、、海爾爾空調(diào)調(diào)等,,TCL工廠可可以生生產(chǎn)TCL電視機(jī)機(jī)、TCL空調(diào)等等,相相同品品牌的的電器器構(gòu)成成一個(gè)個(gè)產(chǎn)品品族,,而相相同類類型的的電器器構(gòu)成成了一一個(gè)產(chǎn)產(chǎn)品等等級(jí)結(jié)結(jié)構(gòu),,現(xiàn)使使用抽抽象工工廠模模式模模擬該該場(chǎng)景景。抽象工工廠模模式模式實(shí)實(shí)例與與解析析實(shí)例一一:電電器工工廠抽象工工廠模模式模式實(shí)實(shí)例與與解析析實(shí)例一一:電電器工工廠參考代代碼(Chapter06AbstractFactory\sample01)演示……抽象工工廠模模式模式實(shí)實(shí)例與與解析析實(shí)例二二:數(shù)數(shù)據(jù)庫(kù)庫(kù)操作作工廠廠某系統(tǒng)統(tǒng)為了了改進(jìn)進(jìn)數(shù)據(jù)據(jù)庫(kù)操操作的的性能能,自自定義義數(shù)據(jù)據(jù)庫(kù)連連接對(duì)對(duì)象Connection和語句句對(duì)象象Statement,可針針對(duì)不不同類類型的的數(shù)據(jù)據(jù)庫(kù)提提供不不同的的連接接對(duì)象象和語語句對(duì)對(duì)象,,如提提供Oracle或SQLServer專用連連接類類和語語句類類,而而且用用戶可可以通通過配配置文文件等等方式式根據(jù)據(jù)實(shí)際際需要要?jiǎng)討B(tài)態(tài)更換換系統(tǒng)統(tǒng)數(shù)據(jù)據(jù)庫(kù)。。使用用抽象象工廠廠模式式設(shè)計(jì)計(jì)該系系統(tǒng)。。抽象工工廠模模式模式實(shí)實(shí)例與與解析析實(shí)例二二:數(shù)數(shù)據(jù)庫(kù)庫(kù)操作作工廠廠抽象工工廠模模式模式優(yōu)缺點(diǎn)點(diǎn)抽象工廠模模式的優(yōu)點(diǎn)點(diǎn)抽象工廠模模式隔離了具體體類的生成成,使得客戶戶并不需要要知道什么么被創(chuàng)建。。由于這種種隔離,更更換一個(gè)具具體工廠就就變得相對(duì)對(duì)容易。所所有的具體體工廠都實(shí)實(shí)現(xiàn)了抽象象工廠中定定義的那些些公共接口口,因此只需改變具具體工廠的的實(shí)例,就就可以在某某種程度上上改變整個(gè)個(gè)軟件系統(tǒng)統(tǒng)的行為。另外,應(yīng)應(yīng)用抽象工工廠模式可以實(shí)現(xiàn)高高內(nèi)聚低耦耦合的設(shè)計(jì)計(jì)目的,因此抽象象工廠模式式得到了廣廣泛的應(yīng)用用。當(dāng)一個(gè)產(chǎn)產(chǎn)品族中中的多個(gè)個(gè)對(duì)象被被設(shè)計(jì)成成一起工工作時(shí),,它能夠保證證客戶端端始終只只使用同同一個(gè)產(chǎn)產(chǎn)品族中中的對(duì)象象。這對(duì)一一些需要要根據(jù)當(dāng)當(dāng)前環(huán)境境來決定定其行為為的軟件件系統(tǒng)來來說,是是一種非非常實(shí)用用的設(shè)計(jì)計(jì)模式。。增加新的的具體工工廠和產(chǎn)產(chǎn)品族很很方便,,無須修修改已有有系統(tǒng),,符合““開閉原原則”。抽象工廠廠模式模式優(yōu)缺缺點(diǎn)抽象工廠廠模式的的缺點(diǎn)在添加新新的產(chǎn)品品對(duì)象時(shí)時(shí),難以擴(kuò)展展抽象工工廠來生生產(chǎn)新種種類的產(chǎn)產(chǎn)品,這是因因?yàn)樵诔槌橄蠊S廠角色中中規(guī)定了了所有可可能被創(chuàng)創(chuàng)建的產(chǎn)產(chǎn)品集合合,要支支持新種種類的產(chǎn)產(chǎn)品就意意味著要要對(duì)該接接口進(jìn)行行擴(kuò)展,,而這將將涉及到到對(duì)抽象象工廠角角色及其其所有子子類的修修改,顯顯然會(huì)帶帶來較大大的不便便。開閉原則則的傾斜斜性(增加新新的工廠廠和產(chǎn)品品族容易易,增加加新的產(chǎn)產(chǎn)品等級(jí)級(jí)結(jié)構(gòu)麻麻煩)抽象工廠廠模式模式適用用環(huán)境在以下情情況下可可以使用用抽象工工廠模式式:一個(gè)系統(tǒng)統(tǒng)不應(yīng)當(dāng)依依賴于產(chǎn)產(chǎn)品類實(shí)實(shí)例如何何被創(chuàng)建建、組合合和表達(dá)達(dá)的細(xì)節(jié)節(jié),這對(duì)于于所有類類型的工工廠模式式都是重重要的。。系統(tǒng)中有多于一一個(gè)的產(chǎn)產(chǎn)品族,而每次次只使用用其中某某一產(chǎn)品品族。屬于同一一個(gè)產(chǎn)品品族的產(chǎn)產(chǎn)品將在在一起使使用,這一約約束必須須在系統(tǒng)統(tǒng)的設(shè)計(jì)計(jì)中體現(xiàn)現(xiàn)出來。。系統(tǒng)提供供一個(gè)產(chǎn)產(chǎn)品類的的庫(kù),所有的產(chǎn)產(chǎn)品以同同樣的接接口出現(xiàn)現(xiàn),從而使使客戶端不不依賴于于具體實(shí)實(shí)現(xiàn)。抽象工廠廠模式模式應(yīng)用用(1)JavaSEAWT(抽象窗窗口工具具包)在Java語言的AWT(抽象窗窗口工具具包)中就使用用了抽象象工廠模模式,它它使用抽抽象工廠廠模式來來實(shí)現(xiàn)在在不同的的操作系系統(tǒng)中應(yīng)應(yīng)用程序序呈現(xiàn)與與所在操操作系統(tǒng)統(tǒng)一致的的外觀界界面。抽象工廠廠模式模式應(yīng)用用(2)在很多軟軟件系統(tǒng)統(tǒng)中需要要更換界界面主題題,要求求界面中中的按鈕鈕、文本本框、背背景色等等一起發(fā)發(fā)生改變變時(shí),可可以使用用抽象工工廠模式式進(jìn)行設(shè)設(shè)計(jì)。抽象工廠廠模式模式擴(kuò)展展“開閉原原則”的的傾斜性性“開閉原原則”要要求系統(tǒng)統(tǒng)對(duì)擴(kuò)展展開放,,對(duì)修改改封閉,,通過擴(kuò)擴(kuò)展達(dá)到到增強(qiáng)其其功能的的目的。。對(duì)于涉涉及到多多個(gè)產(chǎn)品品族與多多個(gè)產(chǎn)品品等級(jí)結(jié)結(jié)構(gòu)的系系統(tǒng),其其功能增增強(qiáng)包括括兩方面面:(1)增加產(chǎn)品品族:對(duì)于增加加新的產(chǎn)產(chǎn)品族,,工廠方方法模式式很好的的支持了了“開閉閉原則””,對(duì)于于新增加加的產(chǎn)品品族,只只需要對(duì)對(duì)應(yīng)增加加一個(gè)新新的具體體工廠即即可,對(duì)對(duì)已有代代碼無須須做任何何修改。。(2)增加新的產(chǎn)品品等級(jí)結(jié)構(gòu)::對(duì)于增加新的的產(chǎn)品等級(jí)結(jié)結(jié)構(gòu),需要修修改所有的工工廠角色,包包括抽象工廠廠類,在所有有的工廠類中中都需要增加加生產(chǎn)新產(chǎn)品品的方法,不不能很好地支支持“開閉原原則”。抽象象工工廠廠模模式式的的這這種種性性質(zhì)質(zhì)稱稱為為“開開閉閉原原則則””的的傾傾斜斜性性,抽抽象象工工廠廠模模式式以以一一種種傾傾斜斜的的方方式式支支持持增增加加新新的的產(chǎn)產(chǎn)品品,,它它為為新新產(chǎn)產(chǎn)品品族族的的增增加加提提供供方方便便,,但但不不能能為為新新的的產(chǎn)產(chǎn)品品等等級(jí)級(jí)結(jié)結(jié)構(gòu)構(gòu)的的增增加加提提供供這這樣樣的的方方便便。。抽象象工工廠廠模模式式模式式擴(kuò)擴(kuò)展展工廠廠模模式式的的退退化化當(dāng)抽抽象象工工廠廠模模式式中中每每一一個(gè)個(gè)具具體體工工廠廠類類只只創(chuàng)創(chuàng)建建一一個(gè)個(gè)產(chǎn)產(chǎn)品品對(duì)對(duì)象象,,也也就就是是只存存在在一一個(gè)個(gè)產(chǎn)產(chǎn)品品等等級(jí)級(jí)結(jié)結(jié)構(gòu)構(gòu)時(shí)時(shí),,抽抽象象工工廠廠模模式式退退化化成成工工廠廠方方法法模模式式;當(dāng)當(dāng)工廠廠方方法法模模式式中中抽抽象象工工廠廠與與具具體體工工廠廠合合并并,,提提供供一一個(gè)個(gè)統(tǒng)統(tǒng)一一的的工工廠廠來來創(chuàng)創(chuàng)建建產(chǎn)產(chǎn)品品對(duì)對(duì)象象,,并并將將創(chuàng)創(chuàng)建建對(duì)對(duì)象象的的工工廠廠方方法法設(shè)設(shè)計(jì)計(jì)為為靜靜態(tài)態(tài)方方法法時(shí)時(shí),,工工廠廠方方法法模模式式退退化化成成簡(jiǎn)簡(jiǎn)單單工工廠廠模模式式。本章章小小結(jié)結(jié)抽象象工工廠廠模模式式提提供供一一個(gè)個(gè)創(chuàng)創(chuàng)建建一一系系列列相相關(guān)關(guān)或或相相互互依依賴賴對(duì)對(duì)象象的的接接口口,,而而無無須須指指定定它它們們具具體體的的類類。。抽抽象象工工廠廠模模式式又又稱稱為為Kit模式式,,屬屬于于對(duì)對(duì)象象創(chuàng)創(chuàng)建建型型模模式式。。抽象象工工廠廠模模式式包包含含四四個(gè)個(gè)角角色色::抽抽象象工工廠廠用用于于聲聲明明生生成成抽抽象象產(chǎn)產(chǎn)品品的的方方法法;;具具體體工工廠廠實(shí)實(shí)現(xiàn)現(xiàn)了了抽抽象象工工廠廠聲聲明明的的生生成成抽抽象象產(chǎn)產(chǎn)品品的的方方法法,,生生成成一一組組具具體體產(chǎn)產(chǎn)品品,,這這些些產(chǎn)產(chǎn)品品構(gòu)構(gòu)成成了了一一個(gè)個(gè)產(chǎn)產(chǎn)品品族族,,每每一一個(gè)個(gè)產(chǎn)產(chǎn)品品都都位位于于某某個(gè)個(gè)產(chǎn)產(chǎn)品品等等級(jí)級(jí)結(jié)結(jié)構(gòu)構(gòu)中中;;抽抽象象產(chǎn)產(chǎn)品品為為每每種種產(chǎn)產(chǎn)品品聲聲明明接接口口,,在在抽抽象象產(chǎn)產(chǎn)品品中中定定義義了了產(chǎn)產(chǎn)品品的的抽抽象象業(yè)業(yè)務(wù)務(wù)方方法法;;具具體體產(chǎn)產(chǎn)品品定定義義具具體體工工廠廠生生產(chǎn)產(chǎn)的的具具體體產(chǎn)產(chǎn)品品對(duì)對(duì)象象,,實(shí)實(shí)現(xiàn)現(xiàn)抽抽象象產(chǎn)產(chǎn)品品接接口口
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校維修施工組織設(shè)計(jì)
- 石河子大學(xué)《書寫技能訓(xùn)練二》2021-2022學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《金屬工藝學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《抗干擾技術(shù)》2021-2022學(xué)年第一學(xué)期期末試卷
- 2018年四川內(nèi)江中考滿分作文《我心中的英雄》20
- 沈陽理工大學(xué)《化工熱力學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 古玩購(gòu)銷合同
- 廣州市中級(jí)人民法院解除不定期租賃合同案例
- 杭州銀行勞動(dòng)合同管理辦法全文
- 2024個(gè)人租房合同正規(guī)范本
- 徠卡v lux4中文說明書大約工作時(shí)間和可拍攝圖像數(shù)量
- 格力2匹柜機(jī)檢測(cè)報(bào)告KFR-50LW(50530)FNhAk-B1(性能)
- 分級(jí)護(hù)理制度考試題及答案
- 小學(xué)生勞動(dòng)課炒菜教案(精選8篇)
- 高考作文模擬寫作:“德”與“得”導(dǎo)寫及范文
- 江蘇專轉(zhuǎn)本《大學(xué)語文》考綱
- 中國(guó)青瓷藝術(shù)鑒賞智慧樹知到答案章節(jié)測(cè)試2023年麗水學(xué)院
- 2023年小學(xué)數(shù)學(xué)手抄報(bào)比賽活動(dòng)總結(jié)(3篇)
- 2023年版一級(jí)建造師-水利工程實(shí)務(wù)電子教材
- 中國(guó)當(dāng)代文學(xué)智慧樹知到答案章節(jié)測(cè)試2023年青島濱海學(xué)院
- 新生兒窒息復(fù)蘇搶救流程演練
評(píng)論
0/150
提交評(píng)論