設計模式學習 Decorator 裝飾

2021-05-25 07:14:57 字數 858 閱讀 7548

意圖:動態的為乙個物件新增一些額外的職責,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...