责任链模式

165 阅读1分钟

概念

  • 是一种行为设计模式, 允许你将请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者

分类

  • 纯与不纯
    • 请求必须被某一处理者对象接收
    • 处理者关心是否需要将请求传递给下一个处理者
    • 客户端组装还是全链条执行

角色

  • 客户端
  • 链条
  • 处理者,包含接口和实现
  • 请求上下文

什么时候使用

  • 该模式能将多个处理者连接成一条链。 接收到请求后, 它会 “询问” 每个处理者是否能够对其进行处理
  • 必须按顺序执行多个处理者
  • 如果所需处理者及其顺序必须在运行时进行改变, 可以使用责任链模式。

应用场景

  • 请假审批,网上写的最多的一种
  • Tomcat filterChain 过滤器
  • spring interceptor 拦截器

优缺点

  • 符合单一职责原则

  • 符合开闭原则

  • 能够控制请求处理的顺序

  • 部分请求可能未被处理

  • 链条太长,处理起来耗时会比较久,影响系统性能

  • 请求可能到末端都未能被处理

安利