装饰模式

目的

动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。

解释

优缺点

  • 装饰类和被装饰类可以独立发展,不会相互耦合(采用组合而不是继承),装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。
  • 但是装饰模式比较复杂
  • 在封装器栈中删除特定封装器比较困难;
  • 较难实现行为不受到先后顺序影响的装饰;
  • 各装饰层的代码相对冗余。

示例

UML 图