/*
* 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...