此為大話設計模式decorator的c++版本
/*
* decorator.cpp
* * created on: jul 19, 2017
* author: [email protected]
* 裝飾模式
*/#include
#include
using namespace std;
class person
; person(string name)
virtual
void show()
private:
string _name;
};class finery:public person
void show() override
}protected:
person *_component;
};class tshirts:public finery
};class bigtrouser:public finery
執行結果:
裝扮一:
板鞋 垮褲
大t恤
裝扮的tony
裝飾模式優點:(摘抄於《設計模式》)
1.比靜態整合更靈活與物件的靜態整合相比,decorator模式提供了更加靈活的向物件新增職責的方式.可以用新增和分離的方法,用裝飾在執行時刻增加和刪除職責.相比之下,繼承機制要求為每個新增的職責建立乙個新的子類.這回增加系統的複雜度.
2.避免在層次結構高層的類有太多的特徵decorator提供了一宗即用即付的方法來新增職責.它並不試圖在乙個複雜的可定製的類中支援所有可預見的的特徵,相反你可以定義乙個簡單的類並且用decotator給它元件給它新增功能.可以從簡單的部件組合出複雜的功能.這樣,應用程式不必為不需要的特徵付出代價.
缺點:
1.decorator與它的compoent不一樣decorator是乙個透明的包裝.如果我們從物件標識的觀點出發,乙個被裝飾的元件與這個元件是有差別的,因此使用裝飾時不應該依賴物件標識.
2.有許多小物件採用decorator模式進行系統設計往往會產生許多看上去類似的小物件,這些物件僅僅在他們互相鏈結的方式上有所不同,而不是他們的類或是他們的屬性值有所不同.儘管對於那些了解這些系統的人來說,很容易對它們進行定製,但是很難學習這些系統,排錯也很困難.
大話設計模式C 版 裝飾模式
女人常說男人喜新厭舊。僅僅見新人笑,那聞舊人哭,但裝飾模式 decorator 卻是一種結交新朋友不忘老朋友的設計模式,很適合去古代當老公 現代是不行的。由於僅僅能娶乙個老婆了 裝飾模式的本質是每個裝飾物件都被保留乙個被其裝飾的物件,裝飾物件在展示新功能時會同一時候去呼叫被其裝飾的物件的同功能函式,...
設計模式PHP版六 裝飾器模式
定義乙個介面 inte ce component inte ce component class decorator 裝飾器 abstract class decorator implements component public function operation class suit 西裝裝飾...
C語言版 裝飾器模式
c語言是面向過程的一門語言,更注重過程,是乙個乙個函式進行乙個乙個去執行 是這麼乙個過程,那麼我們怎樣來實現用c語言來實現類似裝飾器模式的效果呢?每個函式是乙個單獨的過程,這個函式編寫之後,我們可以為這個函式新增新的功能或者邏輯而不改動原函式,這就實現了類似裝飾器的效果了。c語言中指標很強大,任何定...