装饰模式的定义是:
动态地给一个对象附加职责。比生成子类的方式更为灵活地扩展对象的功能。
其UML类图的示例如下:
在这个模式中,参与者包括:
- Component:定义负责动态添加对象的接口
- ConcreteComponent:定义一个需要添加额外职责的对象。
- Decorator:维护一个引用Component对象的引用,并定义一个符合Component接口的接口。
- ConcreteDecorator:给组件添加职责
实现代码:
public interface Component
{
void Operation();
}
public class ConcreteComponent : Component
{
public void Operation()
{
Console.WriteLine("Component Operation");
}
}
public abstract class Decorator : Component
{
private Component _component;
public Decorator(Component component)
{
_component = component;
}
public virtual void Operation()
{
_component.Operation();
}
}
public class ConcreteDecorator : Decorator
{
public ConcreteDecorator(Component component) : base(component) { }
public override void Operation()
{
base.Operation();
Console.WriteLine("Override Decorator Operation");
}
}
- 动态地给对象添加额外的状态或行为。
- 修改类中的某些对象时不影响其他对象。