- 装饰模式是为已有功能动态的添加更多功能的一种方式。
- 当系统需要新功能的时候,是向旧的类中添加新的代码,这些代码通常装饰了原有类的核心职责或者主要行为。
- 装饰模式的有点,把类中的装饰功能从类中搬移去除,这样可以简化原有的类。
- 有效的把类的核心职责和装饰功能区分开了,而且可以去除相关类中重复的装饰逻辑。
- 举例
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 ();
}
}
}