第02課 裝飾器模式

2021-10-09 16:31:58 字數 545 閱讀 5861

裝飾器模式動態地將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。

某一天隔壁老王赤果果地來到百貨商店,打算給自己買一套裝備,武裝到牙齒。他買了衣服褲子和帽子,於是老王這樣做:

public class laowang 

}

但老王很快發現了問題,每買一件裝備都要修改一次 show() 方法,違背了開閉原則。在前面的內容中已經解釋過開閉原則:對擴充套件開放、對修改關閉。每增加一件裝備都相當於擴充套件了乙個功能,我們不應該用修改原方法的方式來擴充套件功能。

機智的老王學過設計模式,很快就想到了使用裝飾器模式,裝飾器模式動態地把功能附加到物件上。

裝飾器模式類圖:

觀察上圖,裝飾器模式中主要有兩個角色:

用老王買裝備的例子來說,老王就是被裝飾的物件,而衣服褲子帽子等就是裝飾器。

裝飾器和被裝飾的物件有兩個特點

裝飾器模式

大話設計模式 裝飾器模式 為已有功能動態地新增更多功能,當系統需要新功能,向舊的類中新增新功能,裝飾了原有類的核心職責和行為,而不改變它們 就像包裝袋一樣,有 的包裝袋包裝之前裝好東西的包裝袋 ifndef clothes h define clothes h include using names...

裝飾器模式

裝飾器設計模式 對真實物件動態的新增功能 抽象元件 author zhangjianbin public inte ce icar 俱體構件物件 真實的物件 author zhangjianbin class car implements icar 裝飾器物件 author zhangjianbin...

裝飾器模式

一 概念 裝飾模式能夠實現動態的為物件新增功能,是從乙個物件外部來給物件新增功能。通常給物件新增功能,要麼直接修改物件新增相應的功能,要麼派生對應的子類來擴充套件,抑或是使用物件組合的方式。顯然,直接修改對應的類這種方式並不可取。在物件導向的設計中,而我們也應該 盡量使用物件組合,而不是物件繼承來擴...