軟件開發設計模式之(結構型)設計模式

一、外觀模式

定義:又叫門面模式,提供了一個統一的接口,用來訪問子系統中的一羣接口,外觀模式定義了一個高層接口,讓子系統更容易使用

類型:結構型 

優點:簡化了調用過程,無需瞭解深入子系統,防止帶來風險,減少系統依賴,鬆散耦合,更好的劃分訪問層次,符合迪米特法則,即最少知道原則

缺點:增加子系統、擴展子系統行爲容易引入風險,不符合開閉原則

com.dzx.design.structural.facade 包下代碼:外觀模式

二、 裝飾者模式

定義:在不改變原有對象的基礎之上,將功能附加到對象上,提供了比繼承更有彈性的替代方案(擴展原有對象功能)

類型:結構型

適用場景:擴展一個類的功能或給一個類添加附加職責,動態的給一個對象添加功能,這些功能可以再動態的撤銷

優點:

  • 繼承的有力補充,比繼承靈活,不改變原有對象的情況下,給對象一個擴展功能
  • 通過使用不同裝飾類以及這些裝飾類的排列組合,可以實現不同效果
  • 符合開閉原則

缺點:

  • 會出現更多的代碼,更多的類,增加程序複雜性
  • 動態裝飾時,多層裝飾時
com.dzx.design.structural.decorator.v2 包下代碼

三 、適配器模式

定義:將一個類的接口轉換成客戶期望的另一個接口 ,使原本接口不兼容的類可以一起工作

類型:結構型

使用場景:已經存在的類,它的方法和需求不匹配時(方法結果相同或類似) 

不是軟件設計階段考慮的設計模式,是隨着軟件維護,由於不同產品,不同廠家造成功能類似而接口不相同情況下的解決方案

優點:

  • 能提高類的透明性和複用,現有的類複用但不需要改變
  • 目標類和適配器類解耦,提高程序擴展性
  • 符合開閉原則

缺點:

  • 適配器編寫過程需要全面考慮,可能會增加系統的複雜性
  • 增加系統代碼的可讀難度
com.dzx.design.structural.adapter 包下代碼:適配器模式

 

四、享元模式

定義:提供了減少對象數量從而改善應用所需的對象的結構的方式

運用共享技術有效地支持 大量細粒度的對象

 類型:結構型

使用場景:常常應用於系統底層的開發,以便解決系統的性能問題,比如java種的String類,和數據庫連接池

系統有大量相似的對象,需要緩衝池的場景。

優點:減少對象的創建,降低內存中對象的數量,降低系統的內存,提高效率,減少內存之外的其他資源佔用 

缺點:關注內外部狀態,關注線程安全問題,使系統,程序的邏輯複雜化

com.dzx.design.structural.flyweight 包下代碼:享元模式

 五、組合模式

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章