Decorator Pattern - C# 3.0 Design Patterns
Decorator Pattern属于Structural Patterns
介绍:
Decorator pattern的作用是提供一种方式动态的给一个对象添加新的职责或状态,被装饰的对象并不知道被“装饰”了。A key implementation point in the Decorator pattern is that decorators both inherit the original class and contain an instantiation of it.
实现:
UML 类图
public interface IComponent { string Operation(); } /// <summary> /// 被装饰者 /// </summary> public class Component : IComponent { #region IComponent Members public string Operation() { return "I'm a photo;"; } #endregion } /// <summary> /// 装饰者A /// </summary> public class DecoratorA : IComponent { IComponent component; public DecoratorA(IComponent component) { this.component = component; } #region IComponent Members public string Operation() { return component.Operation() + "and decorated by DecoratorA"; } #endregion } /// <summary> /// 装饰者B /// </summary> public class DecoratorB : IComponent { IComponent component; public string AddedState = " and added state"; public DecoratorB(IComponent component) { this.component = component; } #region IComponent Members public string Operation() { return component.Operation() + "and decorated by DecoratorB"; } public string AddedBehavior() { return " and added behavior by DecoratorB"; } #endregion } public class Client { public static void Display(string s, IComponent component) { Console.WriteLine(s + component.Operation()); } } [TestFixture] public class DecoratorTest { [Test] public void T1() { var component = new Component(); Client.Display(string.Empty, component); var decoratorB = new DecoratorB(component); Client.Display("hello!", decoratorB); } }