目录

大话设计模式6:装饰模式

大话设计模式:6.装饰模式

装饰模式:动态地给一个对象,添加额外的职责。这种方式比生成子类更加灵活 TL;DR:装饰模式通过包装,分离核心职责和装饰功能的同时,提供额外的功能/职责。

装饰模式结构图

1. 装饰模式

装饰模式的核心即包装,通过一层套一层的方式,实现额外的功能/职责。

装饰模式通过 Decorator,装饰抽象类,继承 Component,从类外扩展 Component 类的功能,但 Component 无需知道 Decorator 的存在,ConcreteDecorator 是具体的装饰对象,起到给 Component 增加职责的功能。

具体使用方法:

  1. Component 中有虚方法,由 ConcreteComponent 实现
  2. 在 Decorator 类中,设置一个 Component,重写 Operation,执行自身 Component 的操作
  3. 在 ConcreteDecorator 中,重写 Operation,首先调用原来的操作,再增加自身额外的功能
  4. 在调用时,通过层层打开包装的方式,由外到内依次执行

2. 好处 & tips

  1. 把类中的装饰功能从类中移除,简化原有的类
  2. 有效把类的核心职责和修饰功能区分开,除去复杂的修饰逻辑
  3. 使用场景:系统需要更新功能时,如果仅仅为满足某一特定情况,可以通过装饰模式,将其与核心职责分离
  4. 装饰功能间的顺序:eg.过滤词汇要优先于数据加密
  5. 如果只有一个 ConcreteComponent 或 ConcreteDecorator,没必要建立单独的 Component 或 Decorator

最近毕业忙些乱七八糟的东西,时而感叹无疾而终的大学生活,时而感恩怀念学校学院宠爱长不大的我,最终还要向前看,一直再拖延,真的要快点长大呀,拖了半个月,一上手博客都快不会创建了,不过隔一段时间再看,确实更好的理解了一些问题,螺旋式是上升吧。