<java與模式> ---電子書 page 425
裝飾模式—Decorator
裝飾模式有名包裝模式,裝飾模式以對客戶端透明的方式來擴展對象的功能,是繼承關系的一個替代的方案。
客戶端并不會覺得裝飾模式在裝飾前和裝飾后有什么不同,他可以在不使用更多的子類的情況下來進行對對象的功能加以擴展。結構圖如下:
裝飾模式原來被裝飾類的一個子類的實例,把客戶端的調用委派到被裝飾類。他有以下組成:抽象構件,具體構件,裝飾角色,具體裝飾;他一般在下面這些情況使用他最好:
1、 需要擴展一個類的功能,或給一個類增加附加責任。
2、 需要動態的給一個對象增加功能,這些功能可能被動態的撤消。
3、 需要增加一些基本功能的排例組合而產生的非常大量的功能,從而使繼承關系變得不現實。
優點:他可以靈活的增加一個類或對象的功能,也可以通過不同的具體裝飾類的排例組合設計出更加復雜的,功能更強的類。
缺點:他雖然增加了一個類的靈活性,但同時他也給一個類的管理帶來了復雜性。
posted on 2005-08-03 00:00
sky 閱讀(209)
評論(0) 編輯 收藏