当前位置: 首页 > news >正文

设计模式之-责任链模式,快速掌握责任链模式,通俗易懂的讲解责任链模式以及它的使用场景

系列文章目录

设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列
设计模式之-单列设计模式,5种单例设计模式使用场景以及它们的优缺点
设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式,每一种模式的概念、使用场景和优缺点。
设计模式之模板方法模式,通俗易懂快速理解,以及模板方法模式的使用场景
设计模式之-建造者模式通俗易懂理解,以及建造者模式的使用场景和示列代码
设计模式之-代理模式,快速掌握理解代理模式,以及代理模式的使用场景
设计模式之-原型模式,快速掌握原型模式,通俗易懂的理解原型模式以及使用场景
设计模式之-中介者模式,快速掌握中介者模式,通俗易懂的讲解中介者模式以及它的使用场景
设计模式之-责任链模式,快速掌握责任链模式,通俗易懂的讲解责任链模式以及它的使用场景
设计模式之-装饰模式,快速掌握装饰模式,通俗易懂的讲解装饰模式以及它的使用场景
设计模式之-适配器模式,快速掌握适配器模式,通俗易懂的讲解适配器模式以及它的使用场景


文章目录

  • 系列文章目录
  • 一、快速理解责任链模式
  • 二、责任链模式使用场景
  • 代码示例


一、快速理解责任链模式

责任链模式是一种行为型设计模式,它将请求的发送者和接收者解耦,使多个对象都有机会处理请求。每个接收者都包含对下一个接收者的引用,形成一个链条,当请求从链条的头部开始传递时,每个接收者都有机会处理请求,直到有一个接收者能够处理为止。

在现实生活中,责任链模式的例子可以是请假审批流程。假设有多个层级的审批人员,每个人都有不同的审批权限。当员工提交请假申请时,请求会从最高层级的审批人员开始传递,如果一个审批人员无法处理请求,则将请求传递给下一个审批人员,直到有人能够处理为止。

二、责任链模式使用场景

  1. 当有多个对象可以处理同一个请求时,可以使用责任链模式。每个对象都有机会处理请求,但处理者不需要知道请求的发送者和后续处理者。
  2. 当需要动态指定处理请求的对象时,可以使用责任链模式。可以根据特定条件来决定请求的传递顺序或跳过某些处理者。

代码示例

下面是一个通俗易懂的责任链模式示例代码,以请假审批为场景:

// 抽象处理者:审批人
abstract class Approver {protected Approver nextApprover;public void setNextApprover(Approver nextApprover) {this.nextApprover = nextApprover;}public abstract void approveLeave(int days);
}// 具体处理者:主管
class Supervisor extends Approver {@Overridepublic void approveLeave(int days) {if (days <= 2) {System.out.println("主管批准了请假申请");} else {if (nextApprover != null) {nextApprover.approveLeave(days);} else {System.out.println("没有人能够处理该请假申请");}}}
}// 具体处理者:经理
class Manager extends Approver {@Overridepublic void approveLeave(int days) {if (days <= 5) {System.out.println("经理批准了请假申请");} else {if (nextApprover != null) {nextApprover.approveLeave(days);} else {System.out.println("没有人能够处理该请假申请");}}}
}// 具体处理者:CEO
class CEO extends Approver {@Overridepublic void approveLeave(int days) {if (days <= 7) {System.out.println("CEO批准了请假申请");} else {System.out.println("没有人能够处理该请假申请");}}
}// 客户端代码
public class Main {public static void main(String[] args) {Approver supervisor = new Supervisor();Approver manager = new Manager();Approver ceo = new CEO();supervisor.setNextApprover(manager);manager.setNextApprover(ceo);supervisor.approveLeave(3); // 主管批准了请假申请supervisor.approveLeave(6); // CEO批准了请假申请supervisor.approveLeave(9); // 没有人能够处理该请假申请}
}

在上面的示例中,Approver是抽象处理者,定义了处理请假申请的方法和下一个处理者的引用。Supervisor、Manager和CEO是具体处理者,分别实现了抽象处理者的处理请假申请方法,并在其中判断是否能够处理请求,如果不能处理则将请求传递给下一个处理者。

在客户端代码中,首先创建了主管、经理和CEO对象,并设置它们的下一个处理者。然后调用主管的approveLeave方法来发起请假申请,该方法会根据请假天数判断是否能够处理请求,如果不能处理则会将请求传递给下一个处理者。最后,根据不同的请假天数,输出不同的处理结果。

通过使用责任链模式,可以灵活地指定处理请求的对象,并且可以动态调整处理者的顺序或跳过某些处理者。责任链模式还可以将请求的发送者和接收者解耦,使得它们之间的依赖关系更加松散。

http://www.lryc.cn/news/265745.html

相关文章:

  • Qt通用属性工具:随心定义,随时可见(一)
  • Python中json模块的使用与pyecharts绘图的基本介绍
  • nodejs+vue+微信小程序+python+PHP医院挂号系统-计算机毕业设计推荐
  • 数据大模型与低代码开发:赋能技术创新的黄金组合
  • Redis BitMap(位图)
  • 使用eclipse创建一个java文件并运行
  • C#上位机与欧姆龙PLC的通信05---- HostLink协议
  • Uniapp 开发 BLE
  • c语言排序算法
  • 【机器学习】模式识别
  • 【Prometheus|报错】Out of bounds
  • 【音视频】Mesh、Mcu、SFU三种框架的总结
  • 高级算法设计与分析(四) -- 贪心算法
  • MATLAB - 机器人逆运动学设计器(Inverse Kinematics Designer APP)
  • 使用OpenCV DNN模块进行人脸检测
  • C#中使用OpenCV的常用函数
  • 使用Swift Package Manager (SPM)实现xcframework分发
  • 非阻塞 IO(NIO)
  • Android应用-flutter使用Positioned将控件定位到底部中间
  • Django 简单图书管理系统
  • C++内存管理和模板初阶
  • QtRO(Qt Remote Objects)分布式对象远程通信
  • 【K8s】1# 使用kuboard-spray安装K8s集群
  • leetCode算法—12. 整数转罗马数字
  • 使用OpenCV4实现工业缺陷检测的六种方法
  • Excel 获取当前行的行数
  • R语言【stringr】——str_detect 检测是否存在字符串的匹配项
  • 【SpringMVC】SpringMVC的请求与响应
  • Spring Boot3通过GraalVM生成exe执行文件
  • 【Amazon 实验②】使用缓存策略及源请求策略,用于控制边缘缓存的行为及回源行为