7.2.2 結(jié)構(gòu)性模式
機(jī)構(gòu)性模式 控制 較大部分之間的 關(guān)系。
它將以不同的方式 影響應(yīng)用程序。
允許在補(bǔ)充寫(xiě)代碼或自定義代碼的情況下 創(chuàng)建系統(tǒng)。
具有增強(qiáng)的 重復(fù)使用性和應(yīng)用性能。
1、Adapter 模式
可以充當(dāng)兩個(gè)類之間的媒介,可以轉(zhuǎn)換一個(gè)類的接口,被另外一個(gè)類使用,使得具有不兼容接口的類能夠系統(tǒng)使用。
優(yōu)點(diǎn):
允許多個(gè)不兼容的對(duì)象 進(jìn)行交互和通信。
提高已有功能的重復(fù)使用性。
以下情況,應(yīng)該使用 Adapter 模式:
要使用已有類,而該類接口與所需的接口并不匹配。
要?jiǎng)?chuàng)建可重用的類,該類可以與 不相關(guān) 或 未知類 進(jìn)行協(xié)作。
要在一個(gè) 不同于已知對(duì)象接口的接口環(huán)境中 使用對(duì)象。
必須要進(jìn)行多個(gè)源之間的接口轉(zhuǎn)換的時(shí)候。
2、Bridge模式
將一個(gè)復(fù)雜的組件 分成兩個(gè)獨(dú)立的 但又相關(guān)的 繼承層次結(jié)構(gòu):功能性抽象和內(nèi)部實(shí)現(xiàn)。
優(yōu)點(diǎn):
接口與實(shí)現(xiàn)相分離。
提高了可擴(kuò)展性。
對(duì)客戶端隱藏了實(shí)現(xiàn)的細(xì)節(jié)。
以下情況中,應(yīng)該使用 Bridge 模式:
避免在抽象及其實(shí)現(xiàn)之間 存在永久的綁定。
抽象及其實(shí)現(xiàn) 可以使用子類進(jìn)行擴(kuò)展。
抽象的實(shí)現(xiàn)被改動(dòng) 不用重新編譯代碼。
3、Composite 模式
創(chuàng)建樹(shù)形層次結(jié)構(gòu)來(lái)改變復(fù)雜性。
優(yōu)點(diǎn):
定義了由 主要對(duì)象 和 符合對(duì)象 組成的類層次結(jié)構(gòu)。
添加新的組件類型更加簡(jiǎn)單。
結(jié)構(gòu)的靈活性和可管理性的接口。
以下情況中,應(yīng)該使用 Composite 模式:
想要表示對(duì)象的整個(gè) 或者部分的層次結(jié)構(gòu)。
想要客戶端能夠忽略符合對(duì)象和單個(gè)對(duì)象之間的差異。
結(jié)構(gòu)可以具有任何級(jí)別的復(fù)雜性,而且是動(dòng)態(tài)的。
4、Decorator 模式
不修改對(duì)象外觀和功能的情況下 添加或刪除對(duì)象功能。
優(yōu)點(diǎn):
比靜態(tài)繼承具有更大的靈活性。
避免了特征裝載的類 處于層次結(jié)構(gòu)的 過(guò)高級(jí)別。
簡(jiǎn)化了編碼。
改進(jìn)了對(duì)象的擴(kuò)展性。
在以下情況中,應(yīng)該使用 Decorator 模式:
在單個(gè)對(duì)象中 動(dòng)態(tài)并且透明地 添加責(zé)任,不會(huì)影響其他對(duì)象。
以后可能要修改的對(duì)象中添加責(zé)任。
無(wú)法通過(guò)靜態(tài)子類化實(shí)現(xiàn)擴(kuò)展時(shí)。
5、Facade 模式
為子系統(tǒng)中的一組接口 提供了一個(gè)統(tǒng)一的接口。更容易使用子系統(tǒng)的高級(jí)接口。
優(yōu)點(diǎn):
在不減少系統(tǒng)所提供的選項(xiàng)的情況下,為復(fù)雜系統(tǒng)提供了簡(jiǎn)單接口。
屏蔽了子系統(tǒng)組件。
提高若耦合度。
將客戶端請(qǐng)求轉(zhuǎn)換后 發(fā)送給能夠處理這些請(qǐng)求的 子系統(tǒng)。
以下情況中,應(yīng)使用 Facade 模式:
為復(fù)雜的子系統(tǒng)提供簡(jiǎn)單的接口。
客戶端和抽象的實(shí)現(xiàn)類中 存在許多依賴關(guān)系。
想要對(duì)子系統(tǒng)進(jìn)行分層。
6、Flyweight 模式
通過(guò)共享對(duì)象 減少對(duì)象數(shù)目。
通過(guò)共享一個(gè)接口來(lái)避免使用多個(gè)具有相同信息的實(shí)例 所帶來(lái)的開(kāi)銷。
優(yōu)點(diǎn):
減少了要處理的對(duì)象數(shù)目。
如果對(duì)象能夠持續(xù),可以減少內(nèi)存和存儲(chǔ)設(shè)備。
以下情況中,應(yīng)該使用 Flyweight 模式:
應(yīng)用程序使用大量的對(duì)象。
由于對(duì)象數(shù)目巨大,導(dǎo)致很高的存儲(chǔ)開(kāi)銷。
不依賴于對(duì)象的身份。
相關(guān)推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |