下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、簡單工廠模式,工廠方法模式和抽象工廠模式的異同簡單工廠模式,工廠方法模式和抽象工廠模式都是屬于創(chuàng)建型設(shè)計(jì)模式,這三種創(chuàng)建型模 式都不需要知道具體類。我們掌握一種思想,就是在創(chuàng)建一個(gè)對(duì)象時(shí),需要把容易發(fā)生變化的地 方給封裝起來,來控制變化(哪里變化,封裝哪里),以適應(yīng)客戶的變動(dòng),項(xiàng)目的擴(kuò)展。用這三 種設(shè)計(jì)模式都可以實(shí)現(xiàn),那究竟這三種設(shè)計(jì)模式有什么異同呢?下面根據(jù)這三者之間的特點(diǎn),優(yōu) 點(diǎn),缺點(diǎn),適用范圍進(jìn)行比較。特點(diǎn)簡單工廠模式:專門定義一個(gè)類來負(fù)責(zé)創(chuàng)建其他類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有 共同的父類。它又稱為靜態(tài)工廠方法模式。它的實(shí)質(zhì)是由一個(gè)工廠 類根據(jù)傳入的參數(shù),動(dòng)態(tài)決定應(yīng)該創(chuàng)建哪一個(gè)產(chǎn)品類(
2、這些產(chǎn)品類 繼承自一個(gè)父類或接口)的實(shí)例。簡單工廠模式的創(chuàng)建目標(biāo),所有 創(chuàng)建的對(duì)象都是充當(dāng)這個(gè)角色的某個(gè)具體類的實(shí)例。在這個(gè)模式中,工廠類是整個(gè)模式的關(guān)鍵所在。它包含必要的判斷邏輯,能夠根據(jù) 外界給定的信息,決定究竟應(yīng)該創(chuàng)建哪個(gè)具體類的對(duì)象。用戶在使 用時(shí)可以直接根據(jù)工廠類去創(chuàng)建所需的實(shí)例,而無需了解這些對(duì)象 是如何創(chuàng)建以及如何組織的。有利于整個(gè)軟件體系結(jié)構(gòu)的優(yōu)化。工廠方法模式:工廠方法是粒度很小的設(shè)計(jì)模式,因?yàn)槟J降谋憩F(xiàn)只是一個(gè)抽象的方法。提前定義用于創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化具體的某一個(gè)類,即 在工廠和產(chǎn)品中間增加接口,工廠不再負(fù)責(zé)產(chǎn)品的創(chuàng)建,由接口針對(duì)不 同條件返回具體的類實(shí)例,由
3、具體類實(shí)例去實(shí)現(xiàn)。工廠方法模式是簡單 工廠模式的衍生,解決了許多簡單工廠模式的問題。首先完全實(shí)現(xiàn)開 一閉原則,實(shí)現(xiàn)了可擴(kuò)展。其次實(shí)現(xiàn)更復(fù)雜的層次結(jié)構(gòu),可以應(yīng)用于 產(chǎn)品結(jié)果復(fù)雜的場合。工廠方法模式是對(duì)簡單工廠模式進(jìn)行了抽象。有 一個(gè)抽象的Factory類(可以是抽象類和接口),這個(gè)類將不在負(fù)責(zé)具 體的產(chǎn)品生產(chǎn),而是只制定一些規(guī)范,具體的生產(chǎn)工作由其子類去完成。 在這個(gè)模式中,工廠類和產(chǎn)品類往往可以依次對(duì)應(yīng)。即一個(gè)抽象工廠對(duì) 應(yīng)一個(gè)抽象產(chǎn)品,一個(gè)具體工廠對(duì)應(yīng)一個(gè)具體產(chǎn)品,這個(gè)具體的工廠就 負(fù)責(zé)生產(chǎn)對(duì)應(yīng)的產(chǎn)品。抽象工廠模式:抽象工廠模式是所有形態(tài)的工廠模式中最為抽象和最具一般性的一種形態(tài)。抽象工廠模
4、式是指當(dāng)有多個(gè)抽象角色時(shí),使用的一種工廠 模式。抽象工廠模式可以向客戶端提供一個(gè)接口,使客戶端在不必指定產(chǎn)品的具體的情況下,創(chuàng)建多個(gè)產(chǎn)品族中的產(chǎn)品對(duì)象。它有多個(gè)抽象產(chǎn)品類,每個(gè)抽象產(chǎn)品類可以派生出多個(gè)具體產(chǎn)品類,一個(gè)抽象 工廠類,可以派生出多個(gè)具體工廠類,每個(gè)具體工廠類可以創(chuàng)建多個(gè)具 體產(chǎn)品類的實(shí)例。每一個(gè)模式都是針對(duì)一定問題的解決方案,工廠 方法模式針對(duì)的是一個(gè)產(chǎn)品等級(jí)結(jié)構(gòu);而抽象工廠模式針對(duì)的是多 個(gè)產(chǎn)品等級(jí)結(jié)果。優(yōu)點(diǎn)簡單工廠模式:工廠類含有必要的判斷邏輯,可以決定在什么時(shí)候創(chuàng)建哪一個(gè)產(chǎn)品類的實(shí) 例,客戶端可以免除直接創(chuàng)建產(chǎn)品對(duì)象的責(zé)任,而僅僅消費(fèi)產(chǎn)品。簡單 工廠模式通過這種做法實(shí)現(xiàn)了對(duì)責(zé)
5、任的分割。簡單工廠模式能夠根據(jù)外界 給定的信息,決定究竟應(yīng)該創(chuàng)建哪個(gè)具體類的對(duì)象。通過它,外界可以從 直接創(chuàng)建具體產(chǎn)品對(duì)象的尷尬局面中擺脫出來。外界與具體類隔離開來, 偶合性低。明確區(qū)分了各自的職責(zé)和權(quán)力,有利于整個(gè)軟件體系結(jié)構(gòu)的優(yōu) 化。工廠方法模式:工廠方法模式是為了克服簡單工廠模式的缺點(diǎn)(主要是為了滿足OCP)而 設(shè)計(jì)出來的。簡單工廠模式的工廠類隨著產(chǎn)品類的增加需要增加很多方法 (或代碼),而工廠方法模式每個(gè)具體工廠類只完成單一任務(wù),代碼簡潔。工廠方法模式完全滿足OCP,即它有非常良好的擴(kuò)展性。抽象工廠模式:抽象工廠模式主要在于應(yīng)對(duì)“新系列”的需求變化。分離了具體的類,抽 象工廠模式幫助你
6、控制一個(gè)應(yīng)用創(chuàng)建的對(duì)象的類,因?yàn)橐粋€(gè)工廠封裝創(chuàng)建 產(chǎn)品對(duì)象的責(zé)任和過程。它將客戶和類的實(shí)現(xiàn)分離,客戶通過他們的抽象 接口操縱實(shí)例,產(chǎn)品的類名也在具體工廠的實(shí)現(xiàn)中被分離,它們不出現(xiàn)在 客戶代碼中。它使得易于交換產(chǎn)品系列。一個(gè)具體工廠類在一個(gè)應(yīng)用中僅 出現(xiàn)一次一一即在它初始化的時(shí)候。這使得改變一個(gè)應(yīng)用的具體工廠變得 很容易。它只需改變具體的工廠即可使用不同的產(chǎn)品配置,這是因?yàn)橐粋€(gè) 抽象工廠創(chuàng)建了一個(gè)完整的產(chǎn)品系列,所以整個(gè)產(chǎn)品系列會(huì)立刻改變。它 有利于產(chǎn)品的一致性。當(dāng)一個(gè)系列的產(chǎn)品對(duì)象被設(shè)計(jì)成一起工作時(shí),一個(gè) 應(yīng)用一次只能使用同一個(gè)系列中的對(duì)象,這一點(diǎn)很重要,而抽象工廠很容 易實(shí)現(xiàn)這一點(diǎn)。抽象工廠
7、模式有助于這樣的團(tuán)隊(duì)的分工,降低了模塊間的 耦合性,提高了團(tuán)隊(duì)開發(fā)效率。缺點(diǎn)簡單工廠模式:當(dāng)產(chǎn)品有復(fù)雜的多層等級(jí)結(jié)構(gòu)時(shí),工廠類只有自己,以不變應(yīng)萬變,就是 模式的缺點(diǎn)。因?yàn)楣S類集中了所有產(chǎn)品創(chuàng)建邏輯,一旦不能正常工作, 整個(gè)系統(tǒng)都要受到影響。系統(tǒng)擴(kuò)展困難,一旦添加新產(chǎn)品就不得不修改工 廠邏輯,有可能造成工廠邏輯過于復(fù)雜,違背了 開放-封閉原則(OCP). 另外,簡單工廠模式通常使用靜態(tài)工廠方法,這使得無法由子類繼承,造 成工廠角色無法形成基于繼承的等級(jí)結(jié)構(gòu)。工廠方法模式:不易于維護(hù),假如某個(gè)具體產(chǎn)品類需要進(jìn)行一定的修改,很可能需要修改 對(duì)應(yīng)的工廠類。當(dāng)同時(shí)需要修改多個(gè)產(chǎn)品類的時(shí)候,對(duì)工廠類的
8、修改會(huì)變 得相當(dāng)麻煩(對(duì)號(hào)入座已經(jīng)是個(gè)問題了)。抽象工廠模式:抽象工廠模式在于難于應(yīng)付“新對(duì)象”的需求變動(dòng)。難以支持新種類的產(chǎn) 品。難以擴(kuò)展抽象工廠以生產(chǎn)新種類的產(chǎn)品。這是因?yàn)槌橄蠊S幾乎確定 了可以被創(chuàng)建的產(chǎn)品集合,支持新種類的產(chǎn)品就需要擴(kuò)展該工廠接口,這 將涉及抽象工廠類及其所有子類的改變。適用范圍簡單工廠模式:工廠類負(fù)責(zé)創(chuàng)建的對(duì)象比較少,客戶只知道傳入了工廠類的參數(shù),對(duì)于始何創(chuàng)建對(duì)象(邏輯)不關(guān)心。工廠方法模式:當(dāng)一個(gè)類不知道它所必須創(chuàng)建對(duì)象的類或一個(gè)類希望由子類來指定它所創(chuàng) 建的對(duì)象時(shí),當(dāng)類將創(chuàng)建對(duì)象的職責(zé)委托給多個(gè)幫助子類中的某一個(gè),并 且你希望將哪一個(gè)幫助子類是代理者這一信息局部化的時(shí)候,可以使用工 廠方法。抽象工廠模式:一個(gè)系統(tǒng)不應(yīng)當(dāng)依賴于產(chǎn)品類實(shí)例如何被創(chuàng)建、組合和表達(dá)的細(xì)節(jié), 這對(duì)于所有形態(tài)的工廠模式都是重要的。這個(gè)系統(tǒng)有多于一個(gè)的產(chǎn)品 族,而系統(tǒng)只消費(fèi)其中某一產(chǎn)品族。同屬于同一個(gè)產(chǎn)品族的產(chǎn)品是在 一起使用的,這一約束必須在系統(tǒng)的設(shè)計(jì)中體現(xiàn)出來。系統(tǒng)提供一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度ktv包間租賃與經(jīng)營管理合同3篇
- 二零二五年度智慧醫(yī)療信息化建設(shè)合同6篇
- 二零二五年度校園內(nèi)快遞配送單位食品安全快速檢測(cè)設(shè)備升級(jí)合同3篇
- E省教育局辦公室復(fù)印紙直采協(xié)議(2024版)版B版
- 2024甲乙雙方關(guān)于新能源技術(shù)研發(fā)的獨(dú)家委托合同
- 二零二五年度物流配送監(jiān)事聘任與效率優(yōu)化合同3篇
- 天津城建大學(xué)《東西智慧與管理實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 太原城市職業(yè)技術(shù)學(xué)院《機(jī)電系統(tǒng)動(dòng)力學(xué)建模與仿真》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年度純凈飲用水品牌重塑與營銷推廣合同3篇
- 2024版生態(tài)造林建設(shè)協(xié)議樣本版B版
- 《文化苦旅》讀書分享 PPT
- 氧化鋁生產(chǎn)工藝教學(xué)拜耳法
- 2023年十八項(xiàng)醫(yī)療核心制度考試題與答案
- 氣管切開患者氣道濕化的護(hù)理進(jìn)展資料 氣管切開患者氣道濕化
- GB/T 12706.1-2020額定電壓1 kV(Um=1.2 kV)到35 kV(Um=40.5 kV)擠包絕緣電力電纜及附件第1部分:額定電壓1 kV(Um=1.2 kV)和3 kV(Um=3.6 kV)電纜
- 管理模板:某跨境電商企業(yè)組織結(jié)構(gòu)及部門職責(zé)
- 底架總組裝工藝指導(dǎo)書
- 簡單臨時(shí)工勞動(dòng)合同模板(3篇)
- 聚酯合成反應(yīng)動(dòng)力學(xué)
- 上??萍即髮W(xué),面試
- 《五年級(jí)奧數(shù)總復(fù)習(xí)》精編課件
評(píng)論
0/150
提交評(píng)論