學習裝飾者模式(Decorator)
1、定義及作用
該模式以對客戶端透明的方式擴展對象的功能。
2、涉及角色
抽象構件角色:定義一個抽象接口,來規(guī)范準備附加功能的類。
具體構件角色:將要被附加功能的類,實現(xiàn)抽象構件角色接口。
抽象裝飾者角色:持有對具體構件角色的引用并定義與抽象構件角色一致的接口。
具體裝飾角色:實現(xiàn)抽象裝飾者角色,負責為具體構件添加額外功能。
3、簡單實現(xiàn)
抽象構件角色java 代碼:












具體構件角色:
















抽象裝飾者角色:
























具體裝飾者角色1:


























具體裝飾者角色2:






















測試類:























OO原則:動態(tài)地將責任附加到對象上。想要擴展功能,裝飾者提供有別于繼承的另一種選擇。
要點:
1、繼承屬于擴展形式之一,但不見得是達到彈性設計的最佳方案。
2、在我們的設計中,應該允許行為可以被擴展,而不須修改現(xiàn)有的代碼。
3、組合和委托可用于在運行時動態(tài)地加上新的行為。
4、除了繼承,裝飾者模式也可以讓我們擴展行為。
5、裝飾者模式意味著一群裝飾者類,這些類用來包裝具體組件。
6、裝飾者類反映出被裝飾的組件類型(實際上,他們具有相同的類型,都經(jīng)過接口或繼承實現(xiàn))。
7、裝飾者可以在被裝飾者的行為前面與/或后面加上自己的行為,甚至將被裝飾者的行為整個取代掉,而達到特定的目的。
8、你可以有無所數(shù)個裝飾者包裝一個組件。
9、裝飾者一般對組建的客戶是透明的,除非客戶程序依賴于組件的具體類型。
10、裝飾者會導致設計中出現(xiàn)許多的小對象,如果過度使用,會讓程序變得很復雜。
posted on 2008-05-25 09:58 々上善若水々 閱讀(1260) 評論(0) 編輯 收藏 所屬分類: 設計模式