意圖:動態的為乙個物件新增一些額外的職責,decorator比子類更加靈活
示例圖:
適用性:
在不影響物件的情況下,以動態,透明的方式給單個物件新增職責
處理那些可以撤銷的職責
但不能使用子類進行擴充時/類被隱藏/類定義不能生成子類…注意事項:
裝飾物件的介面必須與它所裝飾的component的介面一致示例**://compnent同時也是基類
class ctext
};//decorator擁有相同的介面
class ctextdecorator:public ctext
protected:
//自定義的裝飾行為
virtual void drawline()
private:
ctext *m_ptext;
};//客戶呼叫端用於繪製顯示文字
ctext text;//待裝飾物件
ctextdecorator textdec(&text);//裝飾物件
cclient client;
client.drawtext(&text);//客戶顯示文字資訊
client.drawtext(&textdec);//顯示裝飾之後的文字資訊
設計模式學習(四) Decorator
之前我們已經學習完了三個 元件協作 模式,接下來我們將進行 單一職責 模式的學習。單一職責 模式 在軟體元件的設計中,如果責任劃分的不清晰,使用繼承得到的結果往往是隨著需求的變化,子類急劇膨脹,同時充斥著重複的 這時候的關鍵是劃清責任。單一職責 模式的典型模式包括decorator和bridge模式...
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...