裝飾模式,是物件導向程式設計領域中,一種動態地往乙個類中新增新的行為的設計模式。就功能而言,修飾模式相比生成子類更為靈活,這樣可以給某個物件而不是整個類新增一些功能。通過使用裝飾模式,可以在執行時擴充乙個類的功能。原理是:增加乙個修飾類包裹原來的類,包裹的方式一般是通過在將原來的物件作為修飾類的建構函式的引數。裝飾類實現新的功能,但是,在不需要用到新功能的地方,它可以直接呼叫原來的類中的方法。修飾類必須和原來的類有相同的介面。
修飾模式是類繼承的另外一種選擇。類繼承在編譯時候增加行為,而裝飾模式是在執行時增加行為。
當有幾個相互獨立的功能需要擴充時,這個區別就變得很重要。在有些物件導向的程式語言中,類不能在執行時被建立,通常在設計的時候也不能**到有哪幾種功能組合。這就意味著要為每一種組合建立乙個新類。相反,修飾模式是面向執行時候的物件例項的,這樣就可以在執行時根據需要進行組合。
維基百科-修飾模式
public class person
public person(string name)
public virtual void show()
", name);
}}
/// /// 服飾類
///
public class finery : person
public override void show()
}}
#region 具體服飾類
public class tshirts : finery
}public class bigtrouser : finery
}public class shoes : finery
}#endregion
static void main(string args)
輸出:
鞋子大垮褲
大t恤裝扮的是小菜
裝飾模式是為已有的功能動態的新增更多功能的一種方式。
使用場景:當系統需要新功能的時候,需要向舊的類中新增新的**。這些新加的**通常裝飾了原有類的核心職責或主要行為,在主類中加入新的字段,新的方法和新的邏輯,從而增加了主類的複雜度。而這些新加入的東西僅僅是為了滿足一些只有在特定情況下才會執行的特殊行為需要。在這種情況下,裝飾模式提供了乙個非常好的解決方案,它為每個要裝飾的功能放在單獨的類中,並讓這個了類包裹它所要裝飾的物件。因此,當需要執行特殊行為時,客戶**就可以在執行時根據需要有選擇地,按順序使用裝飾功能包裝物件了。
大話設計模式讀書筆記之裝飾者模式
1.定義 動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。2.uml類圖 3.簡單介紹 component是定義乙個物件介面,可以給這些物件動態地新增職責。concretecomponent是定義了乙個具體的物件,也可以給這個物件新增一些職責。decorator,裝飾...
讀書筆記 大話設計模式
大話設計模式 的確寫的很不錯。把晦澀解懂的設計模式,講的通俗易懂。邊讀邊用evernote做筆記,把印象深刻的整理了一下。先補習一下uml的圖示法 繼承,介面,組合,依賴,關聯 策略模式 strategy 定義一系列演算法,所有演算法完成的都是相同的工作,只是實現不同。減少演算法與使用類之間的藕合。...
大話設計模式讀書筆記 策略模式
策略模式作為一種軟體設計模式,指物件有某個行為,但是在不同的場景中,該行為有不同的實現演算法。比如每個人都要 交個人所得稅 但是 在美國交個人所得稅 和 在中國交個人所得稅 就有不同的算稅方法。策略模式的特點 1.定義了一族演算法 業務規則 2.封裝了每個演算法 3.這族的演算法可互換代替 inte...