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

2021-09-23 21:41:48 字數 676 閱讀 3880

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

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

**如下:

#include using namespace std;

class person

void weartshirts()

如果要新新增一種裝扮,那麼就需要修改person類的結構,這樣就違反了開閉原則那就先做抽象好了,把變化的抽象出來,於是類圖結構如下

從而引出裝飾模式

裝飾模式是動態的給物件增加一些屬性和職責

類結構如下

concertcomponent是要被裝飾的物件,即原始物件

dectorator是裝飾抽象類

concertdectoratora和concertdectoratorb是具體的裝飾物件。

看看原來的類圖修改如下

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

首先看看書上的例子吧!人穿衣服的例子!類圖就不畫了,就是簡單的類結構。如下 include using namespace std class person void weartshirts 如果要新新增一種裝扮,那麼就需要修改person類的結構,這樣就違反了開閉原則那就先做抽象好了,把變化的抽象...

設計模式3 裝飾者模式

動態的將責任附加到物件上。想要擴充套件功能,裝飾者提供有別於繼承的另一種選擇 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合設計而努力 對擴充套件開放,對修改關閉 在購買咖啡時,可以要求在其中加入各種調料,例如 蒸奶,豆漿,摩卡等其他調料,會根據加入的不同...

設計模式 (3)裝飾者模式

動態的將責任附加到物件上,在擴充套件功能上,裝飾者提供了比繼承更有彈性的替代方案。維護了開放封閉原則 對擴充套件開放,對修改封閉 將裝飾者和具體元件組合,就是在加入新的行為。組合和委託可以在執行時動態的加上新的行為。而繼承雖然也屬於擴充套件形式之一,但是非彈性設計,而且依賴繼承,類的行為只能在編譯時...