Decorator (Wrapper) miniWiki

Decorator (Wrapper)

意图

Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.

动态地为一个对象添加职责。 该模式为扩展现有类的功能提供了一种比继承更灵活的替代方案。

用途

  • 动态且透明(不影响其他对象)地为一个对象添加职责。
  • 支持撤回操作。
  • 用于继承不可行的场景。

类图

参与者

  • 部件 (Component)
    • 声明可动态添加职责的对象的接口 (Request())。
  • 具体部件 (ConcreteComponent)
    • 实现部件的接口。
  • 修饰器 (Decorator)
    • 维护一个指向部件实例的引用或指针,并提供与部件相同的接口 (Request())。
  • 具体修饰器 (StateDecorator, BehaviorDecorator)
    • 部件实例添加职责,既可以添加状态 (addedState),又可以添加行为 (AddedOperation)。