版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
簡(jiǎn)單工廠模式和抽象工廠模式的通俗理解以造汽車為例來(lái)通俗的說(shuō)一下:(寫的不好或有錯(cuò)誤的地方歡迎大家指正)汽車制造商要造汽車賣給客戶,那應(yīng)該如可來(lái)做?看下面:第一:汽車制造商要知道客戶要什么樣的汽車,即設(shè)計(jì)汽車;第二:設(shè)計(jì)完后,一切ok后,就可以制造汽車了;根據(jù)上面二步描述,我們用程序表達(dá)出來(lái)就是(假設(shè)現(xiàn)在要造一輛Buick):a.設(shè)計(jì)師和工程師去設(shè)計(jì)汽車;publicclassBuickCar//設(shè)計(jì)buick車{publicstringDec(){return"Buick";}}BuickCarbuick=newBuickCar();//造了輛buick結(jié)構(gòu)就是上面的很好理解,我們繼續(xù):假設(shè)現(xiàn)在要造一輛Benze,那做法和上面一樣設(shè)計(jì)汽車制造汽車。即:publicclassBenzeCar//設(shè)計(jì)汽車{//……publicstringDec(){return"Benze";}}BenzeCarbenze=newBenzeCar();//制造一輛benze汽車注:從上面的例子可以發(fā)現(xiàn),制造商每次要一輛新車,都要重新設(shè)計(jì)一下(重復(fù)勞動(dòng))。而制造商設(shè)計(jì)的每一種汽車,它們之間存在一些共同的特新(比如都是流線性什么的,本人不太懂汽車)。既然有了這些共性,那么把問題高度抽象化來(lái)考慮就是,制造商不知道以后需要設(shè)計(jì)什么樣的汽車,也不知道以后的汽車會(huì)有什么新的特性。但是只要是汽車,都可能會(huì)有共同的特性。那么就可以提高效率。用程序表達(dá)出來(lái)就是:建一個(gè)汽車的抽象類:publicabstractclassCar{//……publicabstractstringDec();//汽車的共性}2.假設(shè)N年后,制造商要設(shè)計(jì)一款新車的話:publicclassXXXCar:Car//繼承了原來(lái)汽車的一些共性{//……publicoverridestringDec(){return"XXXCar"};//重寫了汽車的一個(gè)特性}3.ok新車的設(shè)計(jì)好了,我們又可以造車了;XXXCarxxx=newXXXCar();現(xiàn)在的結(jié)構(gòu)如下:===ok,以上所說(shuō)的都是汽車制造過程中的第一步,及設(shè)計(jì)上的。下面來(lái)看看汽車制造過程中的問題====簡(jiǎn)單工廠模式從程序的角度來(lái)看:定義完class后就可以new出該class的實(shí)例。但在處理具體項(xiàng)目的時(shí)候,在定義完class后,往往要做一些其他的操作,才能new出該class的實(shí)例。比如類里面一些變量的賦值,條件的判斷等等。當(dāng)然這些操作,可以使用構(gòu)造函數(shù)來(lái)實(shí)現(xiàn)。但是如果在一個(gè)項(xiàng)目中這個(gè)class的實(shí)例如果要多次用到的化,那構(gòu)造函數(shù)就會(huì)很復(fù)雜,系統(tǒng)的開銷就很大了;從實(shí)際問題來(lái)看:汽車制造商在設(shè)計(jì)完汽車后,不可能直接就去制造汽車了,肯定要先對(duì)汽車制造過程中用的所有東西進(jìn)行準(zhǔn)備。一切準(zhǔn)備完了后才可以制造汽車。還有如果制造商制造每一輛汽車的時(shí)候,都要去準(zhǔn)備一次東西。那肯定是不可能的(除非特殊情況,比如某個(gè)明星花錢定做了一輛的汽車。那沒辦法,人家有錢呵呵)。最好的解決辦法就是:建一個(gè)工廠,將工作分開,有專門的人去準(zhǔn)備東西。工廠只要負(fù)責(zé)根據(jù)設(shè)計(jì)制造汽車就可以。代碼來(lái)看就是://還是以buick為例//設(shè)計(jì)一個(gè)造buick的工廠類PublicclassBuickFactory{//……其他準(zhǔn)備操作PublicBuickCarCreate()//制造汽車;{ReturnnewBuickCar();}}//客戶端代碼BuickFactorybuickfactory=newBuickFactory();//建造一個(gè)buick的汽車工廠BuickCarbuick=buickfactory.Create();//結(jié)構(gòu):===以上模式就是簡(jiǎn)單工廠模式。抽象工廠模式繼續(xù)進(jìn)一步思考問題:假設(shè)現(xiàn)在制造商不造buick改造benze了。如果用簡(jiǎn)單工廠模式的問題就變成了:制造商不但要設(shè)計(jì)benze的工廠,還要重新為benze去建個(gè)工廠.(簡(jiǎn)單工廠模式的弱點(diǎn))Benze工廠類設(shè)計(jì)(同buick)://客戶端代碼BenzeFactorybenzefactory=newBenzeFactory();//建造一個(gè)benze的汽車工廠BenzeCarbenze=benzefactory.Create();//從上面的代碼可以看出,如果在一個(gè)項(xiàng)目中有很多這樣的代碼要修改的話,就會(huì)非常麻煩!(看來(lái)制造商需要對(duì)工廠進(jìn)行重組了,呵呵)1.從實(shí)際問題來(lái)看參見汽車設(shè)計(jì)的過程:其實(shí)工廠在制造每種汽車的過程中有很多東西是可以一起處理。即時(shí)不能一起處理,處理方式也可能一樣(比如對(duì)汽車烤漆的工作)。制造商對(duì)工廠的重組就是:建一個(gè)汽車工廠,工廠準(zhǔn)備好東西,對(duì)不同的汽車開設(shè)不同的生產(chǎn)線來(lái)生產(chǎn)。2.將上面的問題解釋到程序上就是:我們?cè)O(shè)計(jì)一個(gè)抽象的工廠類,定義好抽象的方法(烤漆),讓子工廠類去重寫(因?yàn)椴恢烂恳环N車要如何烤漆)3.代碼//設(shè)計(jì)抽象工廠類publicabstractclassCarFactory{//;準(zhǔn)備publicabstractCarCreate();//造車}//設(shè)計(jì)buick的子工廠類繼承工廠類PublicclassBuickFactory:CarFactory{//;準(zhǔn)備PublicclassCarCreate(){ReturnnewBuickCar();//返回buickcar的實(shí)例}}//設(shè)計(jì)benze的子工廠類PublicclassBenzeFactory:CarFactory{//……準(zhǔn)備PublicclassCarCreate()//ReturnnewBenzeCar();//返回benzecar的實(shí)例}}Ok,來(lái)看一下具體的代碼調(diào)用:CarFactorycarfactory;//定義一個(gè)工廠(此處代碼分開寫看的更清除一些)carfactory=newBuickFactory();//現(xiàn)在要生產(chǎn)buick車,那就開條buick的生產(chǎn)線出來(lái),如果要改造benze的話只要newBenzeFactory()就可以了。Carcar=carfactory.Create();//buick的生產(chǎn)線生成buick了注:其實(shí)對(duì)于第三行代碼還有一種寫法:BuickCarbuick=(BuickCar)carfactory.Create();但是這樣在代碼維護(hù)的時(shí)候還是要
溫馨提示
- 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年高速公路ETC系統(tǒng)升級(jí)改造合同
- 2025年度智能物流平臺(tái)合作返點(diǎn)合同范本4篇
- 2025年度現(xiàn)代農(nóng)業(yè)設(shè)施承攬合同補(bǔ)充協(xié)議4篇
- 2025年度油氣儲(chǔ)罐安全檢測(cè)與改造合同4篇
- 2025年10kv線路施工綠色環(huán)保與節(jié)能減排合同3篇
- 2025年度智能車位租賃合同轉(zhuǎn)讓協(xié)議書(全新版)4篇
- 2024年車輛購(gòu)銷合同示范文本
- 2025年度智能儲(chǔ)煤場(chǎng)租賃管理服務(wù)合同4篇
- 2024礦用設(shè)備租賃合同
- 2025年度城市更新改造項(xiàng)目承包合同簽約與歷史文化保護(hù)協(xié)議(2024版)3篇
- 2024年??谑羞x調(diào)生考試(行政職業(yè)能力測(cè)驗(yàn))綜合能力測(cè)試題及答案1套
- 六年級(jí)數(shù)學(xué)質(zhì)量分析及改進(jìn)措施
- 一年級(jí)下冊(cè)數(shù)學(xué)口算題卡打印
- 2024年中科院心理咨詢師新教材各單元考試題庫(kù)大全-下(多選題部分)
- 真人cs基于信號(hào)發(fā)射的激光武器設(shè)計(jì)
- 【閱讀提升】部編版語(yǔ)文五年級(jí)下冊(cè)第三單元閱讀要素解析 類文閱讀課外閱讀過關(guān)(含答案)
- 四年級(jí)上冊(cè)遞等式計(jì)算練習(xí)200題及答案
- 法院后勤部門述職報(bào)告
- 2024年國(guó)信證券招聘筆試參考題庫(kù)附帶答案詳解
- 道醫(yī)館可行性報(bào)告
- 視網(wǎng)膜中央靜脈阻塞護(hù)理查房課件
評(píng)論
0/150
提交評(píng)論