文章出處
文章列表
在今天,讀書有時是件“麻煩”事。它需要你付出時間,付出精力,還要付出一份心境。--僅以《大話設計模式》來祭奠那逝去的……
裝飾模式:動態的給一個對象增加一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活(適合場景,需要經常動態的添加額外職責的時候使用。穩定的業務不建議使用裝飾模式,增加不必要的代碼量)
1.裝扮小游戲
給要出門的小伙子打扮一下,衣服都在衣櫥里面,挑選一下打扮起來
首先建立一個人物模型Person
public class Person { public Person() { } private string _name; public Person(string name) { this._name = name; } public virtual void Show() { Console.WriteLine("裝扮的{0}", _name); } }
其次定義一個裝飾類,裝飾類要繼承人物模型類,將人物模型內置到裝飾類中,方便裝飾處理
public class Finery : Person { protected Person _component; public void Decorate(Person person) { this._component = person; } public override void Show() { if (_component != null) _component.Show(); } }
定義各種服飾類,繼承裝飾類,實現裝飾人物模型的功能
public class TShirts : Finery { public override void Show() { Console.Write("大T恤 "); base.Show(); } } public class BigTrouser : Finery { public override void Show() { Console.Write("垮褲 "); base.Show(); } }
開始裝飾人物模型,實例化一個模型“小張”,首先給小張穿上垮褲,然后是T恤,就可以出門了(裝飾模式是一個鏈式調取方式,由外到內或者是由下到上)
static void Main(string[] args) { //裝飾模式 Person person = new Person("小張"); //再穿一個大T恤 TShirts dtx = new TShirts(); dtx.Decorate(person); //先穿一個垮褲 BigTrouser kk = new BigTrouser(); kk.Decorate(dtx); //可以出門了 kk.Show(); }
來看看帥帥的小張吧
文章列表
全站熱搜
留言列表