工廠方法模式設計模式淺談_第1頁
工廠方法模式設計模式淺談_第2頁
工廠方法模式設計模式淺談_第3頁
工廠方法模式設計模式淺談_第4頁
工廠方法模式設計模式淺談_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

工廠方法模式設計模式淺談工廠方法經(jīng)常用在以下兩種情況中:第一種情況是對于某個產(chǎn)品,調用者清楚地知道應該使用哪個具體工廠服務,實例化該具體工廠,生產(chǎn)出具體的產(chǎn)品來。JavaCollection中的iterator()方法即屬于這種情況。第二種情況,只是需要一種產(chǎn)品,而不想知道也不需要知道究竟是哪個工廠為生產(chǎn)的,即最終選用哪個具體工廠的決定權在生產(chǎn)者一方,它們根據(jù)當前系統(tǒng)的情況來實例化一個具體的工廠返回給使用者,而這個決策過程這對于使用者來說是透明的。工廠模式的定義工廠方法模式(FactoryMethod)的意義就是是定義一個用來創(chuàng)建產(chǎn)品對象工廠的接口,然后將所要完成的工作交給子類運行。使得核心工廠類不再對產(chǎn)品進行創(chuàng)建,這樣核心類就成為了一個類似抽象工廠的角色,只提供子類所要創(chuàng)建的對象的借口,這樣做的目的是使得工廠方法模式可以使系統(tǒng)在不改變工廠角色的情況下引進其他新的產(chǎn)品。工廠方法模式其實是簡單工廠模式的衍生,完善了許多簡單工廠模式的缺點,解決了許多簡單工廠模式的問題。工廠方法模式的對簡單工廠模式進行了抽象。有一個抽象的工廠類或者接口,這個類將不再負責詳細的產(chǎn)品生產(chǎn),詳細的生產(chǎn)工作由工廠的子類去完成實現(xiàn)。在樣的模式中,工廠類和產(chǎn)品類一般可以相對應。就是一個抽象工廠對應一個抽象的產(chǎn)品,一個具體工廠對應一個具體產(chǎn)品。工廠方法模式是最典型的模板方法模式應用。工廠方法模式角色與結構抽象工廠(Creator)角色:是工廠方法模式的核心,與應用程序無關。任何在模式中創(chuàng)建的對象的工廠類必須實現(xiàn)這個接口。具體工廠(ConcreteCreator)角色:這是實現(xiàn)抽象工廠接口的具體工廠類,包含與應用程序密切相關的邏輯,并且受到應用程序調用以創(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ōu)點有(1)用戶只需要關心所需產(chǎn)品對應的工廠,無需關心創(chuàng)建細節(jié),甚至無需知道具體產(chǎn)品類的類名。它能夠使工廠方可以自主確定創(chuàng)建何種產(chǎn)品對象,而如何創(chuàng)建這個對象的細節(jié)則完美封裝在具體共產(chǎn)內部。工廠方法模式可以使系統(tǒng)在不改變工廠角色的情況下引進其他新的產(chǎn)品。缺點添加新產(chǎn)品是,需要編寫新的具體產(chǎn)品類,還要提供與之對應的具體工廠類,系統(tǒng)中類的個數(shù)將成對增加,會給系統(tǒng)帶來額外的開銷。對工廠方法模式與簡單工廠模式對比工廠方法模式和簡單工廠模式在結構上的不同是很明顯的。工廠方法模式的核心是一個抽象工廠類,而簡單工廠模式把核心放在一個具體類上工廠方法模式可以允許很多具體工廠類從抽象工廠類中將創(chuàng)建行為繼承下來,從而可以成為多個簡單工廠模式的綜合,進而推廣了簡單工廠模式。工廠方法模式退化后可以變得很像簡單工廠模式。實例介紹寶馬工廠生產(chǎn)寶馬汽車,奔馳工廠生產(chǎn)奔馳汽車使用工廠,使用工廠模式模擬場景,繪制相應類圖用java實現(xiàn)。工廠方法模式的一優(yōu)點在于增加新的產(chǎn)品類無需修改現(xiàn)有系統(tǒng),所以先創(chuàng)建抽象產(chǎn)品類autocar,在對抽象產(chǎn)品類進行實例化,即具體產(chǎn)品類BMWautocar和具體產(chǎn)品類Benzautocar;在創(chuàng)建抽象工廠類autocarFactory,在對抽象工廠類進行實例化,即具體工廠類BMWautocarFactory和具體工廠類BenzautocarFactory。建創(chuàng)建對象的任務委托給多個工廠子類的某一個,客戶端在使用是可以無需關心是哪一個工廠創(chuàng)建的產(chǎn)品子類實例代碼及解釋抽象產(chǎn)品類汽車autocar;autocar作為抽象產(chǎn)品類,它可以是一個接口,也可以是一個抽象類,其中包含了所有產(chǎn)品都具有的業(yè)務方法yunxing()行駛;(2)具體產(chǎn)品類BMWautocar(寶馬汽車類)總結與思考工廠方法模式擴展使用多個工廠方法在抽象工廠角色中定義多個方法,讓具體工廠角色實現(xiàn)這些不同的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論