前言:
对工作项目中的知识点归纳总结.
背景:
在项目的开发中因为有业务用到了该设计模式, 提供了优秀的模板代码, 项目中是如何使用责任链模式的, 因工作内容保密, 本文就不展开讲了, 具体内容间, 开发平台的jira链接, 这里就不放了.
本文主旨介绍责任链模式, 首先分析, 再到代码demo, 今后合适的业务场景做到举一反三
1. 什么是责任链模式?
给定一个对象, 交给责任链, 该对象会经过链路流程处理, 当业务流程发生变化时, 可以动态的改变链内的成员, 或者改变成员之间的次序, 又或者动态的新增或者删除责任成员
2. 使用责任链模式和不使用有何区别?
如果业务逻辑合适, 但是不使用责任链模式, 代码中可能出现多个if-else判断分支, 后续业务需求发生变动, 涉及到的代码改动比较麻烦
而在合适的业务场景使用了责任链模式, 只需要维护类似单个子类连接的链路, 类似达到了热插拔的效果
- 需要新增业务处理, 可以添加子处理类
- 删除业务, 可以减少子处理类
- 改变业务处理顺序, 改变子处理类之间的处理指向顺序
3. 有哪些合适的场景可以使用到链路模式?
-
审批流程:在企业中,许多操作需要经过审批流程,例如请假申请、报销审核等。责任链模式可以用于构建审批流程,每个审批节点负责处理特定的审批任务,并将请求传递给下一个审批节点。这样可以实现灵活的审批流程,并且每个节点可以根据自身的规则和权限来决定是否通过或拒绝请求。
-
请求的参数验证、安全检查、数据转换、日志记录等都可以作为责任链的环节,每个环节负责处理一部分请求任务,并将请求传递给下一个环节进行处理
-
异常处理:在系统开发中,异常处理是一个重要的方面。责任链模式可以用于构建异常处理流程,每个处理节点负责处理特定类型的异常或错误情况,并将异常传递给下一个处理节点。这样可以实现异常的分层处理,每个节点负责处理自己擅长的异常类型。
4. 责任链有哪些执行情况?
责任链模式在执行时有以下几种情况:
-
请求被处理:当一个请求被处理时,责任链模式中的某个处理器接受并处理该请求。处理器可能根据自身的逻辑和条件来判断是否能够处理请求,如果能够处理,则执行相应的处理逻辑并结束责任链的执行。
-
请求被转发:如果一个处理器不能处理请求,它可以选择将请求转发给下一个处理器。转发请求意味着将请求传递给责任链中的下一个处理器,以便后续的处理器继续处理请求。
-
请求终止:责任链模式中的某个处理器可以选择终止责任链的执行,即不再将请求传递给下一个处理器。这通常在某些条件下,处理器确定无需继续处理请求或无法处理请求时发生。
-
完整遍历责任链:当一个请求在责任链中传递时,它可能会经过多个处理器,直到找到能够处理该请求的处理器为止。这涉及责任链中的多次请求处理和转发,直