天天看點

設計模式(3)-裝扮你的類(裝飾模式)

首先看看書上的例子吧!人穿衣服的例子!

類圖就不畫了,就是簡單的類結構。

代碼如下:

如果要新添加一種裝扮,那麼就需要修改person類的結構,這樣就違反了開閉原則

那就先做抽象好了,把變化的抽象出來,于是類圖結構如下

設計模式(3)-裝扮你的類(裝飾模式)

 對應這個實作上面的程式,好像是友善了一些,但是如果繼續增加需求呢?就會出現很多的子類。

進而引出裝飾模式

裝飾模式是動态的給對象增加一些屬性和職責

類結構如下

設計模式(3)-裝扮你的類(裝飾模式)

Componment是定義的一個對象接口,可以給這些對象動态的添加職責

ConcertComponent是要被裝飾的對象,即原始對象

Dectorator是裝飾抽象類

ConcertDectoratorA和ConcertDectoratorB是具體的裝飾對象。

看看原來的類圖修改如下

設計模式(3)-裝扮你的類(裝飾模式)

這樣,就可以實作對人對象的動态裝載,不過,這個例子舉得感覺不是很好,沒有列出裝飾模式的精髓。

繼續閱讀