装饰者模式的基本原理是这样的,将外衣类继承自需要被装饰的类,然后在调用外衣类方法的时候,首先调用基类的(也就是被装饰者)方法。这样就到他被装饰的目的。
1、比如我定义了一个Car类
public class Car
{
public virtual void Description()
{
Console.WriteLine("Basic Car");
}
}
2、显然car可以拥有天窗,因此新建一个天窗类,继承自Car类
public class SunRoofDecorator : Car
{
Car _car;
public SunRoofDecorator(Car car)
{
_car = car;
}
public override void Description()
{
_car.Description();
Console.WriteLine("Add SunRoof");
}
}
在调用Description的时候呢,首先调用基类的Description方法,然后再实现自己的方法。
3、装饰的时候
static void Main(string[] args)
{
Car car = new SunRoofDecorator(new Car());
//Car car = new ESPDecorator();
car.Description();
Console.ReadLine();
}
这就是装饰者模式,。装饰类的构造函数有一个基类的对象。