目录

结构型装饰器模式

结构型——装饰器模式

装饰器模式

装饰器是指能动态地为对象添加额外的功能的一种结构型设计模式。

特点

  • 不修改原有代码的情况下,动态地扩展一个对象的功能。
  • 支持多个装饰器叠加使用
  • 透明性,装饰后的对象与原对象保持一致,客户端无需感知装饰过程

结构模式与实现

python 中 @decorator 语法就是装饰器模式的简化实现,因此这里就不再做代码示例,详情见

要说不同之处,装饰器模式的本质是面向对象的,也就是用于装饰类实例。而python中的 @decorator 语法则是函数式编程的装饰器,其本质是函数式编程中的高阶函数。或者说 @decorator 能起到装饰器模式的作用。

适用场景

  • 动态拓展对象功能
  • 替代多层继承
  • 不可修改的类做功能增强

优缺点

  • 优点:
    • 符合开闭原则,扩展性良好
    • 符合单一职责原则,每个装饰器只负责一个功能
    • 装饰顺序可控,支持自由组合
  • 缺点:
    • 嵌套装饰,嵌套层级过多,代码可读性差
    • 调试困难