装饰者模式

概述

Decorator 装饰者模式也称为 Wrapper 包装器模式,指通过外嵌对象为内部对象添加一些功能。《设计模式:可复用面向对象软件的基础》给出的案例是 ScrollDecorator 装饰器为 TextView 文本框追加滚动功能。装饰器相较使用子类追加功能更为灵活。

结构

  • Component:内嵌对象。
  • ConcreteComponent:具体内嵌对象。
  • Decorator:装饰器,维持一个 Component 指针,接口须包含 Component 定义的接口。
  • ConcreteDecorator:具体装饰者。

Decorator 会将用户请求转发给 Component,并会在转发前后执行一些附加动作。