結構型設計模式是從程序的結構上解決模塊之間的耦合問(wèn)題(好像是句廢話(huà)),GoF23種設計模式中結構型設計模式有7種,分別是:Adapter適配器模式、Bridge橋接模式、Composite組合模式、Decorator裝飾模式、Facade外觀(guān)模式、Flyweight享元模式和Proxy代理模式。下面分別總結一下這幾種模式:
| 設計模式 | GoF的描述 | 我的理解 |
| Adapter適配器模式 | 將一個(gè)類(lèi)的接口轉換成客戶(hù)希望的另一個(gè)接口。Adapter模式使得原本由于接口不兼容而不能一起工作的類(lèi)可以一起工作 | 轉換接口,由于應用環(huán)境的變化,常常需要將“一些現存的對象”放在新的環(huán)境中應用,但是,新環(huán)境要求的接口是現存對象所不滿(mǎn)足的,此時(shí)我們可以通過(guò)添加一層Adapter對現有的對象加入一些接口,使其適應新的應用環(huán)境。 |
| Bridge橋接模式 | 將抽象部分與實(shí)現部分分離,使他們可以獨立的變化 | 分離接口(抽象)與其實(shí)現,當某個(gè)類(lèi)型具有兩個(gè)或兩個(gè)以上的緯度變化(或者說(shuō)是變化點(diǎn)),通過(guò)以繼承接口的方式隔離變化,以減少因變化帶來(lái)的代碼的修改量。 |
| Composite組合模式 | 將對象組合成樹(shù)形結構以表示“部分-整體”的層次結構。Composite模式使得客戶(hù)對單個(gè)對象和組合對象的使用具有一致性 | 解決客戶(hù)程序與復雜對象容器的解耦,一類(lèi)具有“容器特征”的對象——即他們在充當對象的同時(shí),又是其他對象的容器的情況,通過(guò)繼承統一的接口,我們可以將容器對象及其子對象看成同一類(lèi)對象使用,以減少對象使用中的復雜度。 |
| Decorator裝飾模式 | 動(dòng)態(tài)的給一個(gè)對象添加一些額外的職責。就增加功能而言,Decorator模式比生成子類(lèi)更為靈活 | 在穩定接口的前提下為對象擴展功能,主要是解決用繼承的方式為對象擴展大量功能而造成的子對象數量膨脹的問(wèn)題 |
| Facade外觀(guān)模式 | 為子系統中的一組接口提供一個(gè)一致的界面,Facade模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統更加容易使用 | 簡(jiǎn)化接口,對于復雜子系統或子對象調用的封裝。從客戶(hù)程序角度看,只能看見(jiàn)Facade提供的接口。換句話(huà)說(shuō)是對子對象調用的封裝,將客戶(hù)程序對子對象的調用與子對象的變化分離。 |
| Flyweight享元模式 | 運用共享技術(shù)有效的支持大量細粒度的對象 | 主要是解決由于相同對象數量過(guò)大而造成系統內存開(kāi)銷(xiāo)過(guò)大的問(wèn)題。實(shí)際上是相同的對象引用指向同一個(gè)對象空間。在使用Flyweight模式前要做一個(gè)評估,如果使用不當會(huì )適得其反 |
| Proxy代理模式 | 為其他對象提供一種代理以控制這個(gè)對象的訪(fǎng)問(wèn) | 解決直接訪(fǎng)問(wèn)某些對象是出現的問(wèn)題,如:訪(fǎng)問(wèn)遠程的對象 |
在學(xué)習的過(guò)程中感覺(jué),從代碼的角度看Adapter適配器模式和Proxy代理模式有些類(lèi)似,Adapter適配器模式是解決現有對象在新的環(huán)境中的不足,而Proxy代理模式是解決直接訪(fǎng)問(wèn)對象時(shí)出現的問(wèn)題,這兩種模式從使用角度看都是解決直接訪(fǎng)問(wèn)對象時(shí)出現的問(wèn)題,只是含義不十分相同。
聯(lián)系客服