关于装饰器模式
terrylee大哥的这篇文章已经说的很详细了
http://terrylee.cnblogs.com/archive/2006/03/01/340592.html
这里只是记录一下我自己对装饰器模式理解,实现的一个实例,方便温故而知新
class 装饰 { static void Main(string[] args) { ICar tank = new BM();//车的基本功能 tank = new CarA(tank);//在车的基本功能上装饰上 自动档功能 tank = new CarB(tank);//在车的基本功能和自动档功能上装饰上 定速巡航功能 tank.Act(); Console.ReadLine(); } } public interface ICar { void Act(); } public abstract class Car : ICar { public virtual void Act() { Console.WriteLine("基本功能"); } } public class BM : Car { public override void Act() { base.Act(); Console.WriteLine("宝马特殊功能"); } } public class CarA : ICar//自动档功能装饰器 { ICar car = null; public CarA(ICar tank) { this.car = tank; } public void Act() { car.Act(); Console.WriteLine("装饰自动档功能"); } } public class CarB : ICar//装饰定速巡航功能装饰器 { ICar car = null; public CarB(ICar tank) { this.car = tank; } public void Act() { car.Act(); Console.WriteLine("装饰定速巡航功能"); } }