用途

动态地给一个对象而非整个类添加一些额外的职责

要素

  • 接口A:有一个具体子类和一个装饰器子类
  • 类a:接口A的具体子类,其实例传入类b作为属性值
  • 装饰器B:抽象类,实现接口A,且内部组合一个类型为A的属性
  • 类b:继承了装饰器B的子类,添加新的方法来操作实例属性,实现给实例属性添加职责。
  • 示例图:

装饰器模式.jpg

优缺点

  • 避免在高层次的类中添加过多功能,可以在装饰器的子类中随时添加功能