下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
工廠方法模式設(shè)計模式淺談工廠方法經(jīng)常用在以下兩種情況中:第一種情況是對于某個產(chǎn)品,調(diào)用者清楚地知道應(yīng)該使用哪個具體工廠服務(wù),實例化該具體工廠,生產(chǎn)出具體的產(chǎn)品來。JavaCollection中的iterator()方法即屬于這種情況。第二種情況,只是需要一種產(chǎn)品,而不想知道也不需要知道究竟是哪個工廠為生產(chǎn)的,即最終選用哪個具體工廠的決定權(quán)在生產(chǎn)者一方,它們根據(jù)當(dāng)前系統(tǒng)的情況來實例化一個具體的工廠返回給使用者,而這個決策過程這對于使用者來說是透明的。工廠模式的定義工廠方法模式(FactoryMethod)的意義就是是定義一個用來創(chuàng)建產(chǎn)品對象工廠的接口,然后將所要完成的工作交給子類運行。使得核心工廠類不再對產(chǎn)品進(jìn)行創(chuàng)建,這樣核心類就成為了一個類似抽象工廠的角色,只提供子類所要創(chuàng)建的對象的借口,這樣做的目的是使得工廠方法模式可以使系統(tǒng)在不改變工廠角色的情況下引進(jìn)其他新的產(chǎn)品。工廠方法模式其實是簡單工廠模式的衍生,完善了許多簡單工廠模式的缺點,解決了許多簡單工廠模式的問題。工廠方法模式的對簡單工廠模式進(jìn)行了抽象。有一個抽象的工廠類或者接口,這個類將不再負(fù)責(zé)詳細(xì)的產(chǎn)品生產(chǎn),詳細(xì)的生產(chǎn)工作由工廠的子類去完成實現(xiàn)。在樣的模式中,工廠類和產(chǎn)品類一般可以相對應(yīng)。就是一個抽象工廠對應(yīng)一個抽象的產(chǎn)品,一個具體工廠對應(yīng)一個具體產(chǎn)品。工廠方法模式是最典型的模板方法模式應(yīng)用。工廠方法模式角色與結(jié)構(gòu)抽象工廠(Creator)角色:是工廠方法模式的核心,與應(yīng)用程序無關(guān)。任何在模式中創(chuàng)建的對象的工廠類必須實現(xiàn)這個接口。具體工廠(ConcreteCreator)角色:這是實現(xiàn)抽象工廠接口的具體工廠類,包含與應(yīng)用程序密切相關(guān)的邏輯,并且受到應(yīng)用程序調(diào)用以創(chuàng)建產(chǎn)品對象。在上圖中有兩個這樣的角色:BulbCreator與TubeCreator。抽象產(chǎn)品(Product)角色:工廠方法模式所創(chuàng)建的對象的超類型,也就是產(chǎn)品對象的共同父類或共同擁有的接口。在上圖中,這個角色是Light。具體產(chǎn)品(ConcreteProduct)角色:這個角色實現(xiàn)了抽象產(chǎn)品角色所定義的接口。某具體產(chǎn)品有專門的具體工廠創(chuàng)建,它們之間往往一一對應(yīng)。優(yōu)點有(1)用戶只需要關(guān)心所需產(chǎn)品對應(yīng)的工廠,無需關(guān)心創(chuàng)建細(xì)節(jié),甚至無需知道具體產(chǎn)品類的類名。它能夠使工廠方可以自主確定創(chuàng)建何種產(chǎn)品對象,而如何創(chuàng)建這個對象的細(xì)節(jié)則完美封裝在具體共產(chǎn)內(nèi)部。工廠方法模式可以使系統(tǒng)在不改變工廠角色的情況下引進(jìn)其他新的產(chǎn)品。缺點添加新產(chǎn)品是,需要編寫新的具體產(chǎn)品類,還要提供與之對應(yīng)的具體工廠類,系統(tǒng)中類的個數(shù)將成對增加,會給系統(tǒng)帶來額外的開銷。對工廠方法模式與簡單工廠模式對比工廠方法模式和簡單工廠模式在結(jié)構(gòu)上的不同是很明顯的。工廠方法模式的核心是一個抽象工廠類,而簡單工廠模式把核心放在一個具體類上工廠方法模式可以允許很多具體工廠類從抽象工廠類中將創(chuàng)建行為繼承下來,從而可以成為多個簡單工廠模式的綜合,進(jìn)而推廣了簡單工廠模式。工廠方法模式退化后可以變得很像簡單工廠模式。實例介紹寶馬工廠生產(chǎn)寶馬汽車,奔馳工廠生產(chǎn)奔馳汽車使用工廠,使用工廠模式模擬場景,繪制相應(yīng)類圖用java實現(xiàn)。工廠方法模式的一優(yōu)點在于增加新的產(chǎn)品類無需修改現(xiàn)有系統(tǒng),所以先創(chuàng)建抽象產(chǎn)品類autocar,在對抽象產(chǎn)品類進(jìn)行實例化,即具體產(chǎn)品類BMWautocar和具體產(chǎn)品類Benzautocar;在創(chuàng)建抽象工廠類autocarFactory,在對抽象工廠類進(jìn)行實例化,即具體工廠類BMWautocarFactory和具體工廠類BenzautocarFactory。建創(chuàng)建對象的任務(wù)委托給多個工廠子類的某一個,客戶端在使用是可以無需關(guān)心是哪一個工廠創(chuàng)建的產(chǎn)品子類實例代碼及解釋抽象產(chǎn)品類汽車autocar;autocar作為抽象產(chǎn)品類,它可以是一個接口,也可以是一個抽象類,其中包含了所有產(chǎn)品都具有的業(yè)務(wù)方法yunxing()行駛;(2)具體產(chǎn)品類BMWautocar(寶馬汽車類)總結(jié)與思考工廠方法模式擴展使用多個工廠方法在抽象工廠角色中定義多個方法,讓具體工廠角色實現(xiàn)這些不同的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 活動性肺結(jié)核培訓(xùn)
- 2024-2025學(xué)年陜西省咸陽市高一上學(xué)期期末教學(xué)質(zhì)量檢測歷史試題(解析版)
- 2024-2025學(xué)年江蘇省連云港市灌南縣高一下學(xué)期第二次月考?xì)v史試題(解析版)
- 2026年機械工程師精密制造方向技能測試題
- 2026年金融分析師入門測試投資策略與風(fēng)險管理
- 2026年物聯(lián)網(wǎng)技術(shù)應(yīng)用與開發(fā)工程師認(rèn)證題集
- 2026年城市規(guī)劃與可持續(xù)發(fā)展城市規(guī)劃測試題
- 2026年教育學(xué)專業(yè)考試教育心理學(xué)試題
- 2026年高中化學(xué)競賽題與解析
- 2026年經(jīng)濟學(xué)原理與政策分析練習(xí)題庫
- 2025-2026學(xué)年天津市河?xùn)|區(qū)八年級(上)期末英語試卷
- 2026馬年開學(xué)第一課:策馬揚鞭啟新程
- 2025年初中初一語文基礎(chǔ)練習(xí)
- 2026年中央網(wǎng)信辦直屬事業(yè)單位-國家計算機網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心校園招聘備考題庫參考答案詳解
- 老友記電影第十季中英文對照劇本翻譯臺詞
- 2025年黑龍江省大慶市檢察官逐級遴選筆試題目及答案
- 國保秘密力量工作課件
- 影視分鏡師合同范本
- 腫瘤患者凝血功能異常日間手術(shù)凝血管理方案
- 2025年銀行柜員年終工作總結(jié)(6篇)
- 電力工程質(zhì)量保修承諾書(5篇)
評論
0/150
提交評論