- 裝飾模式是為已有功能動態(tài)的添加更多功能的一種方式。
- 當系統(tǒng)需要新功能的時候,是向舊的類中添加新的代碼,這些代碼通常裝飾了原有類的核心職責或者主要行為。
- 裝飾模式的有點,把類中的裝飾功能從類中搬移去除,這樣可以簡化原有的類。
- 有效的把類的核心職責和裝飾功能區(qū)分開了,而且可以去除相關類中重復的裝飾邏輯。
- 舉例
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 ();
}
}
}
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。