7.2 設(shè)計(jì)模式實(shí)例
7.2.1 創(chuàng)建性模式
通過(guò)該了的子類來(lái)創(chuàng)建對(duì)象的。但是,這可能會(huì) 限制在系統(tǒng)內(nèi)創(chuàng)建對(duì)象的類型或數(shù)目。
1、Abstract Factory 模式
在不指定具體類的情況下,為創(chuàng)建一些列 相關(guān) 或 相互依賴的對(duì)象提供了接口。
提供了一個(gè)可以 確定合適的具體類 的抽象類。
優(yōu)點(diǎn):
可以與具體類分開(kāi)。
更容易在產(chǎn)品系列中轉(zhuǎn)換。
提高了產(chǎn)品間的一致性。
以下情況應(yīng)該使用 Abstract Factory 模式:
系統(tǒng)獨(dú)立于產(chǎn)品的 創(chuàng)建、組成、表示。
系統(tǒng)配置成 具有多個(gè)產(chǎn)品的 系列。
相關(guān)產(chǎn)品對(duì)象系列 是共同使用的,而且必須確保這一點(diǎn)。
你希望提供產(chǎn)品的類庫(kù),只開(kāi)放其接口。
2、Builder 模式
將復(fù)雜對(duì)象的 構(gòu)件與表示 相分離,相同的構(gòu)造過(guò)程可以創(chuàng)建不同的對(duì)象,通過(guò)只指定對(duì)象的 類型和內(nèi)容。
一次就可以創(chuàng)建所有的復(fù)雜對(duì)象,而其他模式一次就只能創(chuàng)建一個(gè)對(duì)象。
優(yōu)點(diǎn):
可以對(duì)產(chǎn)品內(nèi)部表示進(jìn)行改變。
將構(gòu)造代碼與表示代碼相分離。
以下情況應(yīng)該使用 Builder 模式:
算法獨(dú)立于 組成對(duì)象。
構(gòu)造過(guò)程必須允許已構(gòu)件對(duì)象有不同表示。
3、Factory Method 模式
實(shí)例化工作交給其子類,可以在不修改代碼的情況下引入新類,因?yàn)樾骂愔粚?shí)現(xiàn)了接口。
優(yōu)點(diǎn):
代碼只處理接口,因此可以使用任何實(shí)現(xiàn)了接口的類。
在類中創(chuàng)建對(duì)象比直接在客戶端創(chuàng)建要更加靈活。
以下情況中,應(yīng)該使用 Factory Method 模式:
類不能預(yù)料它必須創(chuàng)建的對(duì)象的類。
類希望其子類指定要?jiǎng)?chuàng)建的對(duì)象。
類將責(zé)任轉(zhuǎn)給某個(gè)幫助子類,而用戶希望定位那個(gè)被授權(quán)的幫助子類。
4、Prototype 模式
只要將對(duì)象類定義成能夠復(fù)制自身就可以實(shí)現(xiàn)。
優(yōu)點(diǎn)如下:
可以在運(yùn)行時(shí) 添加或刪除產(chǎn)品。
通過(guò)改變值 指定新對(duì)象。
通過(guò)改變結(jié)構(gòu) 制定新對(duì)象。
減少子類的生成和使用。
可以用類 動(dòng)態(tài)地配置 應(yīng)用程序。
以下情況中,應(yīng)該使用Prototype 模式:
運(yùn)行時(shí),指定需要實(shí)例化的類,例如動(dòng)態(tài)載入。
避免構(gòu)建與產(chǎn)品的類層次結(jié)構(gòu)相似的 工廠類層次結(jié)構(gòu)。
5、Singleton 模式
確保 一個(gè)類只有一個(gè)實(shí)例,并且提供全局訪問(wèn)入口,確保使用這個(gè) 實(shí)例 所有的對(duì)象 使用相同的實(shí)例。
優(yōu)點(diǎn):
對(duì)單個(gè)實(shí)例的受控訪問(wèn)。
命名空間的減少。
允許改進(jìn)操作和表示。
允許改變數(shù)目的實(shí)例。
比類操作更靈活。
相關(guān)推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |