(三)裝飾模式

2021-06-21 03:48:14 字數 948 閱讀 7187

動態地給物件新增一些額外的職責,按新增的順序新增職責,建造過程不穩定,即是當你向舊的類中新增新**時,一般是為了新增核心職責或主要行為。而當需要加入的僅僅是一些特定情況下才會執行的特定的功能時(簡單點就是不是核心應用的功能),就會增加類的複雜度。裝飾模式就是把要新增的附加功能分別放在單獨的類中,並讓這個類包含它要裝飾的物件,當需要執行時,客戶端就可以有選擇地、按順序地使用裝飾功能包裝物件。**如下:

#include #include using namespace std;

//人類基類

class person

virtual ~person() {}

virtual void show() {}

};//具體人類的類,黃種人

class huang : public person

virtual ~huang() {}

virtual void show()

};//裝飾基類,繼承person類的

class decorator : public person

virtual void show()

};//具體的裝飾類,tshirts

class tshirts : public decorator

void show()

private:

void add_tshirts()

};//具體的裝飾類,長褲

class pants : public decorator

void show()

private:

void add_pants()

};int main()

要注意的是建造過程的順序是由客戶決定的,具體點講就是客戶決定了要先穿褲子還是先穿長褲,所以在新增功能的時候客戶要自己注意新增的順序,如果先穿外套再穿tshirts就不太好了

設計模式 三 裝飾模式

動態地給乙個物件新增一些額外的職責 不重要的功能,只是偶然一次要執行 就增加功能來說,裝飾模式比生成子類更為靈活。建造過程不穩定,按正確的順序串聯起來進行控制。good 當你向舊的類中新增新 時,一般是為了新增核心職責或主要行為。而當需要加入的僅僅是一些特定情況下才會執行的特定的功能時 簡單點就是不...

設計模式 裝飾模式(三)

裝飾模式 軟體領域中的設計模式的重要性不言而喻。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型。雖然知道這些特性的定義但是並沒有做到真正的理解,這樣特性有什麼作用?用於什麼場合中等等問題,帶著疑問開始學習設計模式,主要參考 大話設計模式 和 設計模式 可復用物件導向軟體的基礎 兩本...

三 裝飾者模式

定義 動態地將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。使用裝飾者模式,建立乙個新的裝飾者完成實現將字串的小寫變成大寫。public class lowercaseinputstream extends filterinputstream public intread...