1 责任链设计模式

1.1 案例引入

  • 我个人觉得该模式是"离我们最近的设计模式",想想平时学校中的请假流程,奖学金的审批流程等其实都是责任链模式的一种反映.这里以请假为例,对于一个普通公司职员,如果他要请假,需要提交请假申请,这里将请假申请看做一个对象,那么该对象需要经过项目经理,部门经理,人事等多个角色的审批,审批过程中的每个角色都有机会通过拦截这个请假申请进行审批或修改,这时就需要考虑项目经理,部门经理和认识的处理逻辑(不同职位处理不同天数的请假单),所以需要提供3个拦截器,传递的对象就是请假单.流程如下:

计算请假时长 java java请假流程_责任链模式

1.2 基本介绍

  • 责任链模式实际上是为请求创建一个接收者对象的链条,该模式可以对请求的发送者和接收者进行解耦.使得多个对象都有机会处理请求,从而避免请求的发送者和接收者之间耦合关系.
  • 责任链模式通常每个接收者都包含对另一个接收者的引用.如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,以此类推.
  • 责任链模式在SSM框架中都有重要的应用.

1.3 请假流程代码案例

  • 创建请假条类

计算请假时长 java java请假流程_Java_02

  • 创建抽象领导类

计算请假时长 java java请假流程_计算请假时长 java_03

  • 创建项目经理,部门经理,人事类

计算请假时长 java java请假流程_责任链模式_04

计算请假时长 java java请假流程_设计模式_05

计算请假时长 java java请假流程_设计模式_06

  • 测试

计算请假时长 java java请假流程_计算请假时长 java_07

1.4 优缺点

  • 请求和处理分离,实现解耦,提高了系统灵活性
  • 简化对象,使对象不需要了解具体链的结构
  • 性能会收到影响,如果链比较长的话,所以需要控制链的长度.
  • 调试不方便,采用了类似递归的方法,调试逻辑比较复杂