23種設計模式 - 結構型

來源:互聯網
上載者:User

標籤:des   cWeb   blog   http   io   os   使用   java   ar   

Bridge模式

UML圖:

解決的問題:bridge模式完成了抽象和實現部分的分離。兩邊變化互相不影響,提高了模組的內聚性。

原理:利用多態性,Abstraction類中包含AbstractionImp類的引用。

Adapter模式:

UML圖

解決的問題:開發過程中有時會使用第三方庫,但本身程式的介面已經設計好,且和第三方庫是不相容的。 此時可以利用適配器模式,從本身程式繼承介面,並代理到第三方程式具體實現

原理: Adapter繼承自介面Target類,並且Adapter中包含Adptee的指標對象。target的request()實際由Adaptee的SpecificRequest()實現。

注意:介面類(target)與第三方類(Adptee)具有不同的介面名稱(request()和SpecificRequest())

Decorator模式:

UML圖

解決的問題:開發中通常會發生要給已知的類天劍新功能,一般的做法是我們直接在原類的基礎上派生子類,這種方式可能導致類的深度過大,導致程式的可讀性降低。而裝飾器模式可以很好的解決這個問題,我們不需要在為類一層一層的派生子類,而是通過實現不同的ConcreteDecorator子類來完成新功能的添加。

原理:ConcreteComponent(待裝飾的類)和Decorator(裝飾父類)都繼承自component類並擁有同樣的基準Operation(),Decorator類中包含有component對象的指標(指向ConcreteComponent)。 而ConcreteDecoratorlei類中的operation會首先調用基準對象的operation(),然後可以添加新的功能AddBehavior().

Composite模式

UML圖

解決的問題: Composite模式很好地解決了將一個對象完成樹狀(或其他資料結構)形式的構建。

原理:Composite和Leaf均派生自介面Component, 在Composite類中完成Leaf對象的結構組織(例如樹狀,vector,list),Composite的operation類調用Leaf對象的operation完成具體對象的操作。

FlyWeight 模式

UML圖

解決的問題:當程式要建立大量具有相同特徵的“小對象”時,會造成記憶體的浪費。享元模式就是為瞭解決這個問題,在FlyWeight中包含有對象的緩衝池,根據需要給client提供共用對象。

Facade模式

UML圖

解決的問題:在開發中某一介面的實現可能分散在不同的類中,而該介面的使用者實際不需要瞭解實現的細節子類,此時可以通過Facade模式屏蔽具體的實現。

原理: Facade類中定義OperationWrapper方法,並包含具體實作類別SubSystem1和SubSystem2的指標對象。在OperationWrapper()中調用Subsystem1和Subsystem2中的Operation()具體實現操作,從而屏蔽具體對象SubSystem1和SubSystem2.

Proxy模式

UML圖

解決的問題:解決某些效能或者許可權控制等問題時,可以將具體操作交給代理完成。(需進一步理解!!!)

23種設計模式 - 結構型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.