一、外觀模式
定義:又叫門面模式,提供了一個統一的接口,用來訪問子系統中的一羣接口,外觀模式定義了一個高層接口,讓子系統更容易使用
類型:結構型
優點:簡化了調用過程,無需瞭解深入子系統,防止帶來風險,減少系統依賴,鬆散耦合,更好的劃分訪問層次,符合迪米特法則,即最少知道原則
缺點:增加子系統、擴展子系統行爲容易引入風險,不符合開閉原則
com.dzx.design.structural.facade 包下代碼:外觀模式
二、 裝飾者模式
定義:在不改變原有對象的基礎之上,將功能附加到對象上,提供了比繼承更有彈性的替代方案(擴展原有對象功能)
類型:結構型
適用場景:擴展一個類的功能或給一個類添加附加職責,動態的給一個對象添加功能,這些功能可以再動態的撤銷
優點:
- 繼承的有力補充,比繼承靈活,不改變原有對象的情況下,給對象一個擴展功能
- 通過使用不同裝飾類以及這些裝飾類的排列組合,可以實現不同效果
- 符合開閉原則
缺點:
- 會出現更多的代碼,更多的類,增加程序複雜性
- 動態裝飾時,多層裝飾時
com.dzx.design.structural.decorator.v2 包下代碼
三 、適配器模式
定義:將一個類的接口轉換成客戶期望的另一個接口 ,使原本接口不兼容的類可以一起工作
類型:結構型
使用場景:已經存在的類,它的方法和需求不匹配時(方法結果相同或類似)
不是軟件設計階段考慮的設計模式,是隨着軟件維護,由於不同產品,不同廠家造成功能類似而接口不相同情況下的解決方案
優點:
- 能提高類的透明性和複用,現有的類複用但不需要改變
- 目標類和適配器類解耦,提高程序擴展性
- 符合開閉原則
缺點:
- 適配器編寫過程需要全面考慮,可能會增加系統的複雜性
- 增加系統代碼的可讀難度
com.dzx.design.structural.adapter 包下代碼:適配器模式
四、享元模式
定義:提供了減少對象數量從而改善應用所需的對象的結構的方式
運用共享技術有效地支持 大量細粒度的對象
類型:結構型
使用場景:常常應用於系統底層的開發,以便解決系統的性能問題,比如java種的String類,和數據庫連接池
系統有大量相似的對象,需要緩衝池的場景。
優點:減少對象的創建,降低內存中對象的數量,降低系統的內存,提高效率,減少內存之外的其他資源佔用
缺點:關注內外部狀態,關注線程安全問題,使系統,程序的邏輯複雜化
com.dzx.design.structural.flyweight 包下代碼:享元模式
五、組合模式