Head First 设计模式03 —— 装饰器模式

装饰器模式

  • 装饰着和被装饰者有相同的超类型。可以用一个或多个装饰者包装对象。
  • 装饰者可以在委托被装饰者行为前后,自实现特殊行为

设计原则 - 开闭原则

  • 对扩展开放,对修改封闭
  • *策略模式、观察者模式和装饰器模式均遵循开闭原则

设计模式 - 装饰器模式

  • 动态地给一个对象添加额外的职责,同时不改变其结构。装饰器模式提供了一种灵活的替代继承方式来扩展功能。
  • 避免通过继承引入静态特征,特别是在子类数量急剧膨胀的情况下。
  • 允许在运行时动态地添加或修改对象的功能。

应用

  • 优点

    • 低耦合:装饰类和被装饰类可以独立变化,互不影响。
    • 灵活性:可以动态地添加或撤销功能。
    • 替代继承:提供了一种继承之外的扩展对象功能的方式。
  • 缺点

    • 复杂性
      • 多层装饰可能导致系统复杂性增加。
      • 存在大量小类,使用时将会增加代码复杂度
  • 场景

    • 需要在不增加大量子类的情况下扩展类的功能。
    • 需要动态地添加或撤销对象的功能。
  • 实例

    • Java I/O