模式動機(jī)
一般有兩種方式可以實(shí)現(xiàn)給一個(gè)類或?qū)ο笤黾有袨椋?/p>
繼承機(jī)制,使用繼承機(jī)制是給現(xiàn)有類添加功能的一種有效途徑,通過繼承一個(gè)現(xiàn)有類可以使得子類在擁有自身方法的同時(shí)還擁有父類的方法。但是這種方法是靜態(tài)的,用戶不能控制增加行為的方式和時(shí)機(jī)。
關(guān)聯(lián)機(jī)制,即將一個(gè)類的對象嵌入另一個(gè)對象中,由另一個(gè)對象來決定是否調(diào)用嵌入對象的行為以便擴(kuò)展自己的行為,我們稱這個(gè)嵌入的對象為裝飾器(Decorator)。
裝飾模式以對客戶透明的方式動態(tài)地給一個(gè)對象附加上更多的責(zé)任,換言之,客戶端并不會覺得對象在裝飾前和裝飾后有什么不同。裝飾模式可以在不需要創(chuàng)造更多子類的情況下,將對象的功能加以擴(kuò)展。這就是裝飾模式的模式動機(jī)。
模式定義
裝飾模式(Decorator Pattern) :動態(tài)地給一個(gè)對象增加一些額外的職責(zé)(Responsibility),就增加對象功能來說,裝飾模式比生成子類實(shí)現(xiàn)更為靈活。其別名也可以稱為包裝器(Wrapper),與適配器模式的別名相同,但它們適用于不同的場合。根據(jù)翻譯的不同,裝飾模式也有人稱之為“油漆工模式”,它是一種對象結(jié)構(gòu)型模式。
模式結(jié)構(gòu)圖

實(shí)例
變形金剛在變形之前是一輛汽車,它可以在陸地上移動。當(dāng)它變成機(jī)器人之后除了能夠在陸地上移動之外,還可以說話;如果需要,它還可以變成飛機(jī),除了在陸地上移動還可以在天空中飛翔。
