C 設計模式Decorator簡單實現

2021-06-18 08:16:33 字數 1052 閱讀 6499

/*
* decorator可以為物件而不是整個類擴充套件功能,並且原部件不需要知道擴充套件的存在
* 本模式非常適合與現有架構的修改而不是重構,並且適合於基礎部件(abstract component)體積較小的場合
* 如果基礎部件本身很大,更適合用strategy模式,為部件註冊策略類並執行各策略
*/
#includeclass visualcomponent 

virtual void draw() = 0;

virtual void resize() = 0;

};class textview : public visualcomponent

virtual void draw();

virtual void resize();

};void textview::draw()

void textview::resize()

class decorator : public visualcomponent

virtual void draw();

virtual void resize();

private:

visualcomponent* _component;

};void decorator::draw()

void decorator::resize()

class borderdecorator : public decorator

virtual void draw();

private:

void drawborder(int);

private:

int _width;

};void borderdecorator::drawborder(int width)

void borderdecorator::draw()

int main()

C 模式設計 Decorator 裝飾模式

需要設計圓 矩形兩種形狀,同時設計這兩種形狀的紅色 藍色版本,按照傳統的思路,使用繼承的方式,則如下圖 按這種方式,當需要的形狀和顏色種類增多時,所定義的類的數量將會急劇增多,而且類之間會有很多重複的 如果運用裝飾模式的思想,依照 組合優先於繼承 原則,將 顏色 單獨定義為乙個 裝飾類 該類也繼承自...

Decorator設計模式

雖然設計模式分得太細會有過度的趨勢,decorator某種程度上也是一種facade模式。但是實現起來還是比較漂亮的。而後面那個人的class arlist list,ilist的方法就不是decorator。它沒有乙個內部的list。這樣 however,now all of list s met...

設計模式 decorator模式

裝飾者模式體現了 敏捷開發思想中的 對類要 開放擴充套件,關閉修改.例子 乙個person主類 若干裝飾品類 紅衣服,藍衣服,藍鞋子,紅鞋子 測試 new乙個person 給他穿上紅衣服藍鞋子 code person介面 public inte ce ipersonperson類 package c...