模式動機
一般有兩種方式可以實現給一個類或對象增加行為:
繼承機制惦蚊,使用繼承機制是給現有類添加功能的一種有效途徑律歼,通過繼承一個現有類可以使得子類在擁有自身方法的同時還擁有父類的方法哮肚。但是這種方法是靜態(tài)的,用戶不能控制增加行為的方式和時機。
關聯機制,即將一個類的對象嵌入另一個對象中每界,由另一個對象來決定是否調用嵌入對象的行為以便擴展自己的行為,我們稱這個嵌入的對象為裝飾器(Decorator)家卖。
裝飾模式以對客戶透明的方式動態(tài)地給一個對象附加上更多的責任眨层,換言之,客戶端并不會覺得對象在裝飾前和裝飾后有什么不同上荡。裝飾模式可以在不需要創(chuàng)造更多子類的情況下趴樱,將對象的功能加以擴展。這就是裝飾模式的模式動機。
模式定義
裝飾模式(Decorator Pattern) :動態(tài)地給一個對象增加一些額外的職責(Responsibility)伊佃,就增加對象功能來說,裝飾模式比生成子類實現更為靈活沛善。其別名也可以稱為包裝器(Wrapper)航揉,與適配器模式的別名相同,但它們適用于不同的場合金刁。根據翻譯的不同帅涂,裝飾模式也有人稱之為“油漆工模式”,它是一種對象結構型模式尤蛮。
模式結構圖
實例
變形金剛在變形之前是一輛汽車媳友,它可以在陸地上移動。當它變成機器人之后除了能夠在陸地上移動之外产捞,還可以說話醇锚;如果需要,它還可以變成飛機坯临,除了在陸地上移動還可以在天空中飛翔焊唬。