天天看點

炒冷飯系列:設計模式 裝飾模式一、什麼是抽象工廠模式二、裝飾模式的結構 角色和職責三、裝飾模式實作

裝飾( decorator )模式又叫做包裝模式。通 過一種對用戶端透明的方式來擴充對象的功能, 是繼承關系的一個替換方案。

炒冷飯系列:設計模式 裝飾模式一、什麼是抽象工廠模式二、裝飾模式的結構 角色和職責三、裝飾模式實作

然後下面就是各個對具體裝飾的實作,如果需要多功能結合 不是互相結合,而是通過父類抽象結合對象達到目的。具體可以參考下面案例的實作圖解。

炒冷飯系列:設計模式 裝飾模式一、什麼是抽象工廠模式二、裝飾模式的結構 角色和職責三、裝飾模式實作

抽象元件角色: 一個抽象接口,是被裝飾類和 裝飾類的父接口。

具體元件角色:為抽象元件的實作類。

抽象裝飾角色:包含一個元件的引用,并定義了 與抽象元件一緻的接口。

具體裝飾角色:為抽象裝飾角色的實作類。負責 具體的裝飾。

局部類圖:

炒冷飯系列:設計模式 裝飾模式一、什麼是抽象工廠模式二、裝飾模式的結構 角色和職責三、裝飾模式實作

具體實作:

car

runcar

cardecorator

上面相當于搭了好架子,後面需要具體實作了。

flycardecorator

swimcardecorator

然後測試代碼

mainclass

運作可以得到以下結果:

繼續閱讀