- 裝飾模式是為已有功能動態(tài)的添加更多功能的一種方式。
- 當(dāng)系統(tǒng)需要新功能的時候,是向舊的類中添加新的代碼,這些代碼通常裝飾了原有類的核心職責(zé)或者主要行為。
- 裝飾模式的有點,把類中的裝飾功能從類中搬移去除,這樣可以簡化原有的類。
- 有效的把類的核心職責(zé)和裝飾功能區(qū)分開了,而且可以去除相關(guān)類中重復(fù)的裝飾邏輯。
- 舉例
using System;
namespace Factory1
{
//人
class Person{
public Person(){}
private string name;
public Person(string name)
{
this.name = name;
}
public virtual void Show()
{
Console.WriteLine ("\nresult = {0}", name);
}
}
//裝飾 人
class Finery:Person{
protected Person component;
public void Decorate(Person component)
{
this.component = component;
}
public override void Show()
{
if (component != null) {
component.Show ();
}
}
}
//裝飾 人 + Tshirt
class TShirts:Finery{
public override void Show()
{
Console.Write ("T-Shirt");
base.Show ();
}
}
//裝飾 人 + BigTrouser
class BigTrouser:Finery{
public override void Show(){
Console.Write("BigTrouser");
base.Show ();
}
}
class MainClass
{
public static void Main (string[] args)
{
Person sc = new Person ("little");
Console.WriteLine ("the First category");
TShirts ts = new TShirts ();
BigTrouser bt = new BigTrouser ();
ts.Decorate (sc);
bt.Decorate (ts);
bt.Show ();
Console.Read ();
}
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。