概述动态为对象添加额外的功能,相对以前利用子类继承来增加父类的功能来说。装饰模式更为简洁、灵活,更符合面向 在Decorator类中,通过SetComponent构造函数来对Component对象进行设置,从而扩展Component的功能,
namespace 装饰模式 { class Program { static void Main(string[] args) { ConcreteComponent c = new ConcreteComponent(); ConcreteDecoratorA a = new ConcreteDecoratorA(); ConcretedDecoratorB b = new ConcretedDecoratorB(); a.SetComponent(c); b.SetComponent(a); b.Operation(); Console.ReadLine(); } } //Component类 abstract class Component { public abstract void Operation(); } //ConcreteComponet类 class ConcreteComponent : Component { public override void Operation() { Console.WriteLine("具体对象的操作!!!") ; } } //Decorator类 abstract class Decorator : Component { //设置Component protected Component component; public void SetComponent (Component component) { this.component = component; } public override void Operation() { if (component != null) { component.Operation(); } } } //ConcreteDecoratorA类 class ConcreteDecoratorA :Decorator { private string addedState; public override void Operation() { base.Operation(); addedState = "标识A的操作,以区别操作B!!!"; Console.WriteLine ("具体对象A的操作!!!"); } } //ConcreteDecoratorB类 class ConcretedDecoratorB : Decorator { private string removeState; public override void Operation() { base.Operation(); removeState = "标识操作B,以区别操作A!!!"; Console.WriteLine("具体对象B的操作!!!"); } } }
运行结果 |
|
来自: 昵称10504424 > 《架构设计》