抽象工廠模式介紹_第1頁(yè)
抽象工廠模式介紹_第2頁(yè)
抽象工廠模式介紹_第3頁(yè)
抽象工廠模式介紹_第4頁(yè)
抽象工廠模式介紹_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 HYPERLINK ./ 更多資料料請(qǐng)?jiān)L問(wèn)問(wèn). HYPERLINK (.) (.)更多企業(yè)業(yè)學(xué)院: HYPERLINK ./Shop/ ./Shoop/中小企企業(yè)管理理全能版版183套套講座+897700份份資料 HYPERLINK ./Shop/40.shtml ./SShopp/400.shhtmll總經(jīng)理理、高層層管理49套講講座+1163888份資料 HYPERLINK ./Shop/38.shtml ./SShopp/388.shhtmll中層管管理學(xué)院院46套講講座+660200份資料 HYPERLINK ./Shop/39.shtml ./SShopp/399.shhtmll國(guó)

2、學(xué)智智慧、易易經(jīng)46套講講座 HYPERLINK ./Shop/41.shtml ./SShopp/411.shhtmll人力資資源學(xué)院院56套講講座+2271223份資料 HYPERLINK ./Shop/44.shtml ./SShopp/444.shhtmll各階段段員工培培訓(xùn)學(xué)院院77套講講座+ 3244份資料 HYPERLINK ./Shop/49.shtml ./SShopp/499.shhtmll員工管管理企業(yè)業(yè)學(xué)院67套講講座+ 87220份資料 HYPERLINK ./Shop/42.shtml ./SShopp/422.shhtmll工廠生生產(chǎn)管理理學(xué)院52套講講座+ 13

3、9920份份資料 HYPERLINK ./Shop/43.shtml ./SShopp/433.shhtmll財(cái)務(wù)管管理學(xué)院院53套講講座+ 179945份份資料 HYPERLINK ./Shop/45.shtml ./SShopp/455.shhtmll銷(xiāo)售經(jīng)經(jīng)理學(xué)院院56套講講座+ 143350份份資料 HYPERLINK ./Shop/46.shtml ./SShopp/466.shhtmll銷(xiāo)售人人員培訓(xùn)訓(xùn)學(xué)院72套講講座+ 48779份資料 HYPERLINK ./Shop/47.shtml ./SShopp/477.shhtmll題目:抽抽象工廠廠模式學(xué)生姓名名 張 婧學(xué) 號(hào) 20

4、1102110777 院 系信信息科學(xué)學(xué)與技術(shù)術(shù)學(xué)院專 業(yè) 計(jì)算機(jī)機(jī)應(yīng)用技技術(shù) 年 級(jí) 20110 級(jí)級(jí)抽象工廠廠模式在軟件系系統(tǒng)中,經(jīng)常面面臨著“一系列列相互依依賴的對(duì)對(duì)象”的創(chuàng)建建工作;同時(shí)由由于需求求的變化化,往往往存在著著更多系系列對(duì)象象的創(chuàng)建建工作。如何應(yīng)應(yīng)對(duì)這種種變化?如何繞繞過(guò)常規(guī)規(guī)的對(duì)象象的創(chuàng)建建方法(neww),提提供一種種“封裝機(jī)機(jī)制”來(lái)避免免客戶程程序和這這種“多系列列具體對(duì)對(duì)象創(chuàng)建建工作”的緊耦耦合?這這就要用用到抽象象工廠模模式。抽抽象工廠廠模式是簡(jiǎn)簡(jiǎn)單工廠廠模式和工工廠方法法模式的升升級(jí)版,它有更更大的靈靈活性,同時(shí)也也更加復(fù)復(fù)雜一些些。為了理解解抽象工工廠,我我們

5、考慮慮這樣一一個(gè)實(shí)際際例子:如果你你想吃飯飯了,怎怎么辦自自己做嗎嗎?自己己做就相相當(dāng)于程程序中直直接使用用neww。當(dāng)然然是自己己下個(gè)指指令,別別人來(lái)做做更爽。那就把把做飯的的任務(wù)交交給廚師師吧,那那么他就是一一個(gè)做飯飯的工廠廠了,你你告訴他他要吃紅紅燒肉,等會(huì)他他就從廚廚房給你你端出來(lái)來(lái)一盤(pán)香香噴噴的的紅燒肉肉了,再再來(lái)個(gè)清清蒸魚(yú)吧吧。下圖圖 1 就是這這個(gè)問(wèn)題題的模型型。圖11 顯然然到了這這里,你你是Clliennt,廚廚師就是是工廠,他擁有做做紅燒肉肉的方法法,做清清蒸魚(yú)的的方法,這些方方法返回回值就是是食物抽抽象。紅紅燒肉、清蒸魚(yú)魚(yú)就是食食物的繼繼承類(lèi),簡(jiǎn)單工工廠模式式也成型型了。

6、簡(jiǎn)單工廠廠模式結(jié)結(jié)構(gòu)圖2優(yōu)點(diǎn):允允許客戶戶端相對(duì)對(duì)獨(dú)立的的創(chuàng)建產(chǎn)產(chǎn)品的過(guò)過(guò)程,并并且在系系統(tǒng)引入入新產(chǎn)品品的時(shí)候候無(wú)需修修改客戶戶端。缺點(diǎn):對(duì)對(duì)修改不不封閉,新增加加產(chǎn)品您您要修改改工廠。違法了了開(kāi)閉法法則(OOCP)。工廠廠方法模模式生活活例子: 廚師手藝藝再好,總有不不會(huì)做的的菜,你你想吃回回鍋肉,怎么辦辦,讓廚廚師學(xué)唄唄,于是是就給他他新增了了做回鍋鍋肉的方方法,以以后你再再想吃一一個(gè)新菜菜,就要要給廚師師新加一一個(gè)方法法,顯然然此做法法的缺點(diǎn)點(diǎn)也就暴暴露出來(lái)來(lái)了,用用程序設(shè)設(shè)計(jì)的描描述就是是對(duì)修改改永遠(yuǎn)不不能封閉閉。 面面對(duì)上面面對(duì)修改改不能封封閉的問(wèn)問(wèn)題,有有沒(méi)有好好的解決決方案嗎嗎

7、?把廚師抽象象變成一一個(gè)基類(lèi)類(lèi),你請(qǐng)請(qǐng)幾個(gè)具具體的廚廚師,分分別有做做清蒸魚(yú)魚(yú)的,做做紅燒肉肉的廚師,如如果你想想吃一個(gè)個(gè)新菜,就再新新找個(gè)廚廚師,從從你的廚廚師基類(lèi)類(lèi)繼承一一下,讓讓他來(lái)做這這個(gè)新菜菜?,F(xiàn)在在來(lái)看這這個(gè)模式式發(fā)生了了變化,結(jié)構(gòu)中中多了一一個(gè)廚師師的抽象象,抽象象并不具具體的加加工產(chǎn)品品了,至至于做什什么,是是由這個(gè)個(gè)抽象工工廠的繼繼承子類(lèi)類(lèi)來(lái)實(shí)現(xiàn)現(xiàn),現(xiàn)在在的模式式也就變變成工廠廠方法模模式了,這個(gè)上上面的結(jié)結(jié)構(gòu)圖11就變成成了下面面的圖33的結(jié)構(gòu)構(gòu)了。圖圖3 現(xiàn)現(xiàn)在再來(lái)來(lái)分析現(xiàn)現(xiàn)在的模模式,顯顯然簡(jiǎn)單單工廠的的缺陷解解決了,新增加加一個(gè)菜菜只需要要新增加加一個(gè)廚廚師就行行了,

8、原原來(lái)的廚廚師還在在做原來(lái)來(lái)的工作作,這樣樣你的設(shè)設(shè)計(jì)就對(duì)對(duì)修改封封閉了。工廠方法法模式結(jié)結(jié)構(gòu) 圖圖4優(yōu)點(diǎn):優(yōu)優(yōu)化簡(jiǎn)單單工廠模模式,做做到“開(kāi)-閉閉”原則??勺龅降桨丫唧w體的產(chǎn)品品創(chuàng)建過(guò)過(guò)程延遲遲到具體體的子類(lèi)類(lèi)工廠。缺點(diǎn):對(duì)對(duì)于創(chuàng)建建不同系系列的產(chǎn)產(chǎn)品無(wú)能能為力。抽象工廠廠模式生生活例子子 你發(fā)現(xiàn)菜菜可分成許多菜菜系,魯魯菜、粵粵菜、湘湘菜等等等,它們們各有各各的風(fēng)味味,同樣樣是紅燒燒肉由不不同菜系系出來(lái)的的味道也也各不相相同。如如果你的的廚師都都是魯菜菜風(fēng)味,廣東的的朋友來(lái)來(lái)了吃不不慣,怎怎么辦?現(xiàn)在我們們?cè)倩氐降胶?jiǎn)單工工廠模式式,我們們把紅燒燒肉再向向下繼承承,生成成魯菜紅紅燒肉、粵菜紅

9、紅燒肉、湘菜紅紅燒肉;清蒸魚(yú)魚(yú)向下繼繼承為魯魯菜清蒸蒸魚(yú)、粵粵菜清蒸蒸魚(yú)、湘湘菜清蒸蒸魚(yú)。我我們也修修改一下下廚師這個(gè)個(gè)類(lèi),不不讓其返返回食物物基類(lèi),而是返返回紅燒燒肉、清清蒸魚(yú)、這一層層次,并并把這些些方法抽抽象化,作為菜菜系工廠廠基類(lèi),然后再再?gòu)拇嘶?lèi)繼承承出,魯魯菜工廠廠、粵菜菜工廠、湘菜工工廠等等等,再由由這些具具體工廠廠實(shí)現(xiàn)創(chuàng)創(chuàng)建具體體菜的工工作。 圖圖5 現(xiàn)在在可以看看到,想想新來(lái)做做一個(gè)菜菜系,只只需新聘聘請(qǐng)一個(gè)個(gè)廚師就就可以了了,多么么完美,但是你你先別高高興太早早,如果果你想新新增加一一個(gè)菜就就變得非非常困難難了。抽象工廠廠模式結(jié)結(jié)構(gòu)圖6抽象工廠廠模式代代碼#incclud

10、de #inccludde usinng nnameespaace stdd;/紅燒燒肉classs CCHonngshhaorroupubllic: virrtuaal CHoongsshaoorouu() ; /產(chǎn)產(chǎn)品使用用公共接接口 virrtuaal vvoidd Sttartt() = 00;/抽象基基類(lèi),純純虛函數(shù)數(shù)由派生生類(lèi)去實(shí)實(shí)現(xiàn); /魯魯菜紅燒燒肉classs CCHonngshhaorrouLLucaai : puubliic CCHonngshhaorroupubllic: CHoongsshaoorouuLuccai() coout 制作作魯菜紅紅燒肉. eendll;

11、 virrtuaal CHoongsshaoorouuLuccai() ; virrtuaal vvoidd Sttartt() coout 魯菜菜紅燒肉肉好了. eendll; ;/粵菜菜紅燒肉肉classs CCHonngshhaorrouYYueccai : ppubllic CHoongsshaoorouupubllic: CHoongsshaoorouuYueecaii() coout 制作作粵菜紅紅燒肉. eendll; virrtuaal CHoongsshaoorouuYueecaii() ; virrtuaal vvoidd Sttartt() coout 粵菜菜紅燒肉肉好了

12、. eendll; ; /清清蒸魚(yú)classs CCqinngzhhenggyupubllic: virrtuaal Cqiingzzhenngyuu() ; /產(chǎn)產(chǎn)品使用用公共接接口 virrtuaal vvoidd Sttartt() = 00;/抽象基基類(lèi),純純虛函數(shù)數(shù)由派生生類(lèi)去實(shí)實(shí)現(xiàn); /魯魯菜清蒸蒸魚(yú)classs CCqinngzhhenggyuLLucaai : puubliic CCqinngzhhenggyupubllic: CqiingzzhenngyuuLuccai() coout 制作作魯菜清清蒸魚(yú). eendll; virrtuaal Cqiingzzhenngyuu

13、Luccai() ; virrtuaal vvoidd Sttartt() coout 魯菜菜清蒸魚(yú)魚(yú)好了. eendll; ; /粵粵菜清蒸蒸魚(yú)classs CCqinngzhhenggyuYYueccai : ppubllic Cqiingzzhenngyuupubllic: CqiingzzhenngyuuYueecaii() coout 制作作粵菜清清蒸魚(yú). eendll; virrtuaal CqiingzzhenngyuuYueecaii() ; virrtuaal vvoidd Sttartt() coout 粵菜菜清蒸魚(yú)魚(yú)好了. eendll; ;/抽象象工廠classs CC

14、Facctorrypubllic: virrtuaal CFaactoory(); virrtuaal CCHonngshhaorrou* CrreatteHoongsshaoorouu() = 00; virrtuaal CCqinngzhhenggyu* Crreatteqiingzzhenngyuu() = 00;/魯菜菜工廠classs CCLuccaiFFacttoryy : pubblicc CFFacttoryypubllic: CLuucaiiFacctorry() coout 制作作魯菜工工廠. enndl; virrtuaal CLuucaiiFacctorry(); vi

15、rrtuaal CCHonngshhaorrou* CrreatteHoongsshaoorouu() reeturrn nnew CHoongsshaoorouuLuccai; ; virrtuaal CCqinngzhhenggyu* Crreatteqiingzzhenngyuu() reeturrn nnew CqiingzzhenngyuuLuccai;/粵菜菜工廠classs CCYueecaiiFacctorry : puubliic CCFacctorrypubllic: CYuuecaaiFaactoory() coout 制作作粵菜工工廠. CrreatteHoongssh

16、aoorouu();/制制作紅燒燒肉 pqiingzzhenngyuu = pFaactoory-Crreatteqiingzzhenngyuu();/制制作清蒸蒸魚(yú) pHoongsshaoorouu-SStarrt(); pqiingzzhenngyuu-SStarrt(); delletee pqqinggzheengyyu; delletee pHHonggshaaoroou;int maiin() CFaactoory* pFFacttoryy = NULLL;/抽象象工廠 /魯魯菜工廠廠。做紅紅燒肉,清蒸魚(yú)魚(yú) pFaactoory = nnew CLuucaiiFacctorry;/

17、制作作魯菜工工廠 Tesst(ppFacctorry); delletee pFFacttoryy; couutenddl; /粵粵菜工廠廠。做紅紅燒肉,清蒸魚(yú)魚(yú) pFaactoory= neew CCYueecaiiFacctorry;/制作作粵菜工工廠 Tesst(ppFacctorry); delletee pFFacttoryy; sysstemm(ppausse); retturnn 0;優(yōu)點(diǎn):將將客戶端端與具體體的類(lèi)分分離。一一個(gè)產(chǎn)品品系列中中的多個(gè)個(gè)對(duì)象被被設(shè)計(jì)在在一起工工作,能能保證客客戶端始始終只使使用一個(gè)個(gè)產(chǎn)品系系列,且且有利于于更新產(chǎn)產(chǎn)品系列列。缺點(diǎn):難難以支持持新品種種產(chǎn)品。抽象工廠廠模式與與工廠方方法模式式的區(qū)別別 a重點(diǎn)點(diǎn)不同。工廠方方法模式式強(qiáng)調(diào)的的是不同同的創(chuàng)建建者根據(jù)據(jù)自身需需求去生生產(chǎn)不同同的具體體產(chǎn)品,重點(diǎn)是是生產(chǎn)具具體產(chǎn)品品;而抽抽象工廠廠模式則則定位為為“在不指指定實(shí)體體類(lèi)別

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論