<java與模式> ---電子書 page 425
裝飾模式—Decorator
裝飾模式有名包裝模式,裝飾模式以對客戶端透明的方式來擴展對象的功能,是繼承關(guān)系的一個替代的方案。
客戶端并不會覺得裝飾模式在裝飾前和裝飾后有什么不同,他可以在不使用更多的子類的情況下來進行對對象的功能加以擴展。結(jié)構(gòu)圖如下:
裝飾模式原來被裝飾類的一個子類的實例,把客戶端的調(diào)用委派到被裝飾類。他有以下組成:抽象構(gòu)件,具體構(gòu)件,裝飾角色,具體裝飾;他一般在下面這些情況使用他最好:
1、 需要擴展一個類的功能,或給一個類增加附加責任。
2、 需要動態(tài)的給一個對象增加功能,這些功能可能被動態(tài)的撤消。
3、 需要增加一些基本功能的排例組合而產(chǎn)生的非常大量的功能,從而使繼承關(guān)系變得不現(xiàn)實。
優(yōu)點:他可以靈活的增加一個類或?qū)ο蟮墓δ埽部梢酝ㄟ^不同的具體裝飾類的排例組合設計出更加復雜的,功能更強的類。