概念
- 是一种行为设计模式, 允许你将请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者
分类
- 纯与不纯
- 请求必须被某一处理者对象接收
- 处理者关心是否需要将请求传递给下一个处理者
- 客户端组装还是全链条执行
角色
- 客户端
- 链条
- 处理者,包含接口和实现
- 请求上下文
什么时候使用
- 该模式能将多个处理者连接成一条链。 接收到请求后, 它会 “询问” 每个处理者是否能够对其进行处理
- 必须按顺序执行多个处理者
- 如果所需处理者及其顺序必须在运行时进行改变, 可以使用责任链模式。
应用场景
- 请假审批,网上写的最多的一种
- Tomcat filterChain 过滤器
- spring interceptor 拦截器
优缺点
-
符合单一职责原则
-
符合开闭原则
-
能够控制请求处理的顺序
-
部分请求可能未被处理
-
链条太长,处理起来耗时会比较久,影响系统性能
-
请求可能到末端都未能被处理
安利
- 分享一个比较好的 设计模式网站