1. 裝飾者模式
裝飾者模式是比較常用的模式,比如Spring session、Mybatis緩存中以及JDK的java.io包中都有着廣泛的應用。
1.定義
動態的將責任附加到對象身上。若要擴展功能,裝飾者提供比繼承更彈性的替代方案。
2.優缺點
-
優點:在不影響其他類的前提下增加功能,當不能使用繼承的時候可以使用裝飾者模式
-
缺點:使用裝飾者模式使得小的類變多,甚至出現類爆炸的情況,在調用關係複雜,不易排查錯誤。
3.類圖
4. 用到的設計原則
- 對擴展開放,對修改關閉
- 封裝變化
- 面向抽象
- 多用組合少用繼承
2. 適配器模式
適配器模式也是一個比較常用的設計模式,他又分爲對象適配器模式和類適配器模式。
1.定義:
將一個類的接口,轉換爲客戶期望的另一個接口。適配器讓原本不兼容的類可以合作無間。
2.優缺點:
- 優點:增加類的複用性,靈活性和擴展性都很好,符合開閉原則
- 缺點:增加代碼複雜性,調用較多,排查比較困難。
3.類圖
4. 用到的設計原則
- 對擴展開放,對修改關閉
- 多用組合,少用繼承
- 面向抽象
3.兩種設計模式的聯繫與區別
在學習這兩種設計模式的時候,感覺他們十分的相似,但是卻有不盡相同
1.裝飾者模式
表示的是與“責任”相關的,每當用到裝飾者模式,就表示有新的行爲或責任要加入其中。裝飾者可以被包裝多次,對用戶來說他不知道裝飾的對象被裝飾了多少次。
2.適配器模式
一定會進行接口的轉換,客戶也是被解耦的。