一、定义:
装饰模式(Decorator):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。
简单来说,装饰模式非常类似于继承,都能给对象添加一些额外的职责。如果需要灵活的添加一组有相对排列序列的功能,单纯的继承实现则显得不是那么优雅,装饰模式可以恰当的实现。
二、UML类图:
三、基本代码
class Program { static void Main(string[] args) { ConcreteComponent c = new ConcreteComponent(); ConcreteDecoratorA d1 = new ConcreteDecoratorA(); ConcreteDecoratorB d2 = new ConcreteDecoratorB(); d1.SetComponent(c); d2.SetComponent(d1); d2.Operation(); Console.Read(); } } abstract class Component { public abstract void Operation(); } class ConcreteComponent : Component { public override void Operation() { Console.WriteLine("具体对象的操作"); } } abstract class Decorator : Component { protected Component component; public void SetComponent(Component component) { this.component = component; } public override void Operation() { if (component != null) { component.Operation(); } } } class ConcreteDecoratorA : Decorator { private string addState; public override void Operation() { base.Operation(); addState = "new state"; Console.WriteLine("具体装饰对象A的操作"); } } class ConcreteDecoratorB : Decorator { public override void Operation() { base.Operation(); AddBehavior(); Console.WriteLine("具体装饰对象B的操作"); } private void AddBehavior() { Console.WriteLine("B 的穿衣"); } }