Java設計模式(四):裝飾模式

裝飾模式(decoretor pattern)

裝飾模式(decoretor pattern):屬於對象的結構型模式。動態地給一個對象添加一些額外的職責,就增加功能來說,裝飾模式比生成子類更爲靈活。裝飾模式以對客戶端透明的方式擴展對象的功能,是繼承關係的一個替代方案。


裝飾模式UML圖

Java設計模式(四):裝飾模式


裝飾模式涉及到的對象

抽象構件對象(Component):定義一個抽象接口,以規範準備接收附加職責的對象。具體構件對象(ConcreteComponent):是Component的一個具體對象,也可以給這個對象添加一些附加職責。裝飾對象(Decorator):該對象存放了一個構件對象的實例,繼承或實現了Component接口。具體裝飾對象(ConcreteDecorator):具體的裝飾對象,負責給Component添加職責。


裝飾模式的意義

裝飾模式是爲已有功能動態地添加更多功能的一種方式。裝飾模式提供了一個非常好的解決方案,它把每個要裝飾的功能放在單獨的類中,並讓這個類包裝它所要裝飾的對象,因此,當需要執行特殊的行爲時,客戶代碼就可以在運行時根據需要有選擇地、按順序地使用裝飾功能包裝對象。這樣做的好處是有效地把類的核心職責和裝飾功能區分開了。而且可以去除相關類中重複的裝飾邏輯。


示例代碼

抽象構件類 Component

Java設計模式(四):裝飾模式

Java

具體構建類 ConcreteComponent

Java設計模式(四):裝飾模式

Java

裝飾類 Decorator

Java設計模式(四):裝飾模式

Java

具體裝飾類A ConcreteDecotorA

Java設計模式(四):裝飾模式

Java

具體裝飾類B ConcreteDecotorB

Java設計模式(四):裝飾模式

Java

客戶端測試類 TestDecotorPattern

Java設計模式(四):裝飾模式

Java


簡單的裝飾模式

如果只有一個 ConcreteComponent 類,可以考慮去掉抽象的 Component 類(接口),把 Decorator 作爲一個 ConcreteComponent 子類。如果只有一個 ConcreteDecorator 類,那麼就沒有必要建立一個單獨的 Decorator 類,而可以把 Decorator 和 ConcreteDecorator 的責任合併成一個類。甚至在只有兩個 ConcreteDecorator 類的情況下,都可以這樣做。

以上所述是小編給大家介紹的裝飾模式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的!

Java學習資料(複製下段鏈接至瀏覽器即可)

data:textml;charset=UTF-8;base64,5oGt5Zac5L2g77yM5p625p6E5biI5a2m5Lmg576k5Y+35pivNjg2NTc5MDE0Cg==

Java設計模式(四):裝飾模式

Java

Java學習資料獲取(複製下段連接至瀏覽器即可)
data:text/html;charset=UTF-8;base64,5p625p6E5biI5a2m5Lmg6LWE5paZ5YWN6LS56aKG5Y+W6K+35Yqg5omj5omj5Y+35pivMTAxODkyNTc4MA==

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