首先看看書上的例子吧!人穿衣服的例子!
類圖就不畫了,就是簡單的類結構。
代碼如下:
如果要新添加一種裝扮,那麼就需要修改person類的結構,這樣就違反了開閉原則
那就先做抽象好了,把變化的抽象出來,于是類圖結構如下
對應這個實作上面的程式,好像是友善了一些,但是如果繼續增加需求呢?就會出現很多的子類。
進而引出裝飾模式
裝飾模式是動态的給對象增加一些屬性和職責
類結構如下
Componment是定義的一個對象接口,可以給這些對象動态的添加職責
ConcertComponent是要被裝飾的對象,即原始對象
Dectorator是裝飾抽象類
ConcertDectoratorA和ConcertDectoratorB是具體的裝飾對象。
看看原來的類圖修改如下
這樣,就可以實作對人對象的動态裝載,不過,這個例子舉得感覺不是很好,沒有列出裝飾模式的精髓。