設(shè)計模式區(qū)別_第1頁
設(shè)計模式區(qū)別_第2頁
設(shè)計模式區(qū)別_第3頁
設(shè)計模式區(qū)別_第4頁
設(shè)計模式區(qū)別_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第一種表述簡單工廠,工廠方法,抽象工廠都屬于設(shè)計模式中的創(chuàng)建型模式。其主要功能都是幫助我們把對象的實例化部分抽取了出來,優(yōu)化了系統(tǒng)的架構(gòu),并且增強了系統(tǒng)的擴展性。本文是本人對這三種模式學(xué)習(xí)后的一個小結(jié)以及對他們之間的區(qū)別的理解。簡單工廠簡單工廠模式的工廠類一般是使用靜態(tài)方法,通過接收的參數(shù)的不同來返回不同的對象實例。不修改代碼的話,是無法擴展的。工廠方法工廠方法是針對每一種產(chǎn)品提供一個工廠類。通過不同的工廠實例來創(chuàng)建不同的產(chǎn)品實例。在同一等級結(jié)構(gòu)中,支持增加任意產(chǎn)品。應(yīng)對產(chǎn)品族概念而生,增加新的產(chǎn)品線很容易,但是無法增加新的產(chǎn)品。pkg AbstraictF actor/ /L小結(jié)工廠模式中,

2、重要的是工廠類,而不是產(chǎn)品類。產(chǎn)品類可以是多種形式,多層繼承或者是 單個類都是可以的。但要明確的,工廠模式的接口只會返回一種類型的實例,這是在設(shè)計產(chǎn)品類 的時候需要注意的,最好是有父類或者共同實現(xiàn)的接口。使用工廠模式,返回的實例一定是工廠創(chuàng)建的,而不是從其他對象中獲取的。工廠模式返回的實例可以不是新創(chuàng)建的,返回由工廠創(chuàng)建好的實例也是可以的。區(qū)別簡單工廠:用來生產(chǎn)同一等級結(jié)構(gòu)中的任意產(chǎn)品。(對于增加新的產(chǎn)品,無能為力)工廠模式:用來生產(chǎn)同一等級結(jié)構(gòu)中的固定產(chǎn)品。(支持增加任意產(chǎn)品)抽象工廠:用來生產(chǎn)不同產(chǎn)品族的全部產(chǎn)品。(對于增加新的產(chǎn)品,無能為力;支持增加產(chǎn)品族)以上三種工廠 方法在等級結(jié)構(gòu)和

3、產(chǎn)品族這兩個方向上的支持程度不同。所以要根據(jù)情況考慮 應(yīng)該使用哪種方法。第二種表述簡單工廠、工廠方法和抽象工廠都是創(chuàng)建型的設(shè)計模式。三者的共同點是:1、都有兩種作用不同的類:產(chǎn)品類和工廠類。其中,工廠類在自己的方法中實例化產(chǎn)品類 (即使用new命令生成產(chǎn)品類的對象),并將生成的產(chǎn)品類的對象提供給外部使用。2、創(chuàng)建的過程,都是類似的:工廠類得到一個標志(可以由程序輸入,也可以讀取配置文 件中的內(nèi)容),返回一個產(chǎn)品對象。三者的不同點:1、簡單工廠簡單工廠方法中,包括一個抽象產(chǎn)品類(該類可以是接口 Interface,也可以是實際的類 Class),所有需要的產(chǎn)品類都是該抽象產(chǎn)品類”的子類(如果是接

4、口的話,那么就是說所有產(chǎn) 品類都繼承了該接口)。簡單工廠一般只包含一個具體的工廠類,由該工廠類生成所有的產(chǎn)品類的對象。生成產(chǎn)品類 的方法,其內(nèi)部一般是類似于switch的結(jié)構(gòu),根據(jù)輸入的標志,選擇創(chuàng)建不同類型的對象。由 于不知道創(chuàng)建的對象到底是哪個類的,所以方法的返回值的類型是抽象產(chǎn)品類”。2、工廠方法抽象工廠中,包括抽象工廠類”和抽象產(chǎn)品類”,同時包含不只一個工廠類。所有的工廠類 都必須是抽象工廠類”的子類,所有的產(chǎn)品都必須是抽象產(chǎn)品類的子類。和簡單工廠比起來,工廠方法一般是從抽象工廠開始的。一般都是在抽象工廠類中提供一個 靜態(tài)方法,由該方法根據(jù)輸入的標志,生成不同的具體工廠類,然后由具體的

5、產(chǎn)品類生成具體的 產(chǎn)品。注意,一個具體工廠類只能生成一種具體的產(chǎn)品類的對象,不同的具體工廠生成不同的產(chǎn) 品,而不是像簡單工廠中那樣,一個工廠類可以生成多種不同產(chǎn)品類的對象??梢赃@么理解,在 選擇不同的具體工廠類的時候,就選擇了生成的產(chǎn)品,相對于簡單工廠,相當于將選擇產(chǎn)品的動 作提前了。因為不知道創(chuàng)建的具體工廠類到底是哪一個,所以生成具體工廠類的靜態(tài)方法的返回值的類 型是抽象工廠類”。具體工廠類生成產(chǎn)品類的方法,返回值的類型也要求是抽象產(chǎn)品類”(因為 前端調(diào)用的時候,需要使用同樣的代碼來訪問)。3、抽象工廠抽象工廠和工廠方法很類似,區(qū)別如下:工廠方法模式:一個抽象產(chǎn)品類,可以派生出多個具體產(chǎn)品類。一個抽象工廠類,可以派生出多個具體工廠類。每個具體工廠類只能創(chuàng)建一個具體產(chǎn)品類的實例。抽象工廠模式:多個抽象產(chǎn)品類,每個抽象產(chǎn)品類可以派生出多個具體產(chǎ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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論