c 設計模式之裝飾模式

2021-07-02 18:18:59 字數 1053 閱讀 8610

裝飾模式能夠實現動態的為物件新增功能,是從乙個物件外部來給物件新增功能。通常給物件新增功能,要麼直接修改物件新增相應的功能,要麼派生對應的子類來擴充套件,抑或是使用物件組合的方式。顯然,直接修改對應的類這種方式並不可取。在物件導向的設計中,而我們也應該盡量使用物件組合,而不是物件繼承來擴充套件和復用功能。裝飾器模式就是基於物件組合的方式,可以很靈活的給物件新增所需要的功能。裝飾器模式的本質就是動態組合。動態是手段,組合才是目的。

component:定義乙個物件介面,可以給這些物件動態地新增職責;

concretecomponent:定義乙個具體的component,繼承自concreatecomponent,重寫了component類的虛函式;

decorator:維持乙個指向component物件的指標,該指標指向需要被裝飾的物件;並定義乙個與component介面一致的介面;

concretedecorator:向元件新增職責。

#include using namespace std;

class component ;  

/* * 主功能類

*/  

class concretecomponent : public component

};/*

* 裝飾主類(輔助功能主類)

*/ class decorator : public component

void operation()

void inter() };

/* * 輔助a功能類

*/ class concretedecoratora : public decorator

void operation() };

/* * 輔助b功能類

*/class concretedecoratorb : public decorator

void operation() };

int main( void )

C 設計模式之裝飾模式

動態地給乙個物件增加一些額外的職責,就增加物件的功能來說,裝飾模式比生成子類更為靈活。裝飾模式是一種物件結構模式。我們常常通過繼承的方式來對乙個既有的類進行功能新增,但繼承方式有顯著的侷限性,因為 例如在視窗控制項當中,要增加新的功能如增加滾動條,增加背景,通過繼承的方式來增加新的功能,有下面的解決...

c 設計模式之裝飾模式

裝飾器模式 動態地給乙個物件新增一些額外的工作職責,就增加功能來說,裝飾器模式比繼承的子類更靈活。裝飾模式的類結構圖 兌現 include include using namespace std class car class runcar public car public void showca...

C 設計模式之裝飾模式

在實際的應用過程中,裝飾模式還是被經常用到的。裝飾模式的本質是符合設計的原則 開閉原則 對修改封閉對新增開放 也就是說對於之前設計好的乙個類,如果想在這個類上新增一些新的功能或者在這個類的業務上新增一下新的業務,就可以在這個類的外層包裝乙個新類,新類就可以擴充套件你想要擴充套件的內容,這就是我理解的...