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

如何优雅的使用责任链模式?

如何优雅的使用责任链模式?


在业务开发中,总是会由于需要处理复杂的业务逻辑,从而造成开发者的代码冗余或者模块之间耦合度过高,那么当面对这种情况时,如何实现请求处理的灵活性和可维护性,责任链模式就可以用起来了。那么说到责任链模式,什么是责任链模式呢?

责任链模式简单理解就是为请求创建了一个处理者对象的链。同时允许请求沿着处理者链进行发送,每个处理者都可以对请求进行处理,或者不处理将其传递给链上的下个处理者。责任链模式属于23中设计模式的一种,属于行为型模式
在这里插入图片描述
那么什么场景适用责任链模式呢?责任链模式主要是为了将发送者和接收者解耦,也就是说发送者发出请求后,多个对象都有可能接收请求,而发送者不需要知道哪个对象会处理它,具体由哪个对象处理由运行时决定时。

责任链模式的实现方式就是所有处理者必须实现同一个接口。对于具体的处理者,实现接口的具体类,包含请求处理逻辑和指向链中下一个处理者的引用。生活中比如:

击鼓传花:游戏中的传递行为,直到音乐停止。
事件冒泡:在JavaScript中,事件从最具体的元素开始,逐级向上传播。
Web服务器:如Apache Tomcat处理字符编码,Struts2的拦截器,以及Servlet的Filter。

责任链模式主要涉及到几个核心的角色:

抽象处理者(Handler):
定义一个处理请求的接口,通常包含一个处理请求的方法(如 handleRequest)和一个指向下一个处理者的引用(后继者)。

具体处理者(ConcreteHandler):
实现了抽象处理者接口,负责处理请求。如果能够处理该请求,则直接处理;否则,将请求传递给下一个处理者。

客户端(Client):
创建处理者对象,并将它们连接成一条责任链。通常,客户端只需要将请求发送给责任链的第一个处理者,无需关心请求的具体处理过程。
就比如如下一个日志类的实现
在这里插入图片描述
首先定义一个抽象处理者 AbstractLogger ,但是不处理具体的业务逻辑;然后再定义三个具体的处理者 ConsoleLogger、ErrorLogger、FileLogger,具体的业务处理逻辑在三个具体的处理者内部进行实现。当客户端发起调用时,客户端只需要将请求发给抽象处理者,然后具体的由哪一个具体处理者执行主要在运行时决定。


http://www.kler.cn/a/291725.html

相关文章:

  • STM32 高级 物联网通信之CAN通讯
  • 实现 WebSocket 接入文心一言
  • CLION中运行远程的GUI程序
  • asp.net core发布配置端口号,支持linux
  • Mybatis-plus-Join--分页查询
  • AI开发-语料-“self-instruct”
  • vue3 置空a-select数据
  • 视频技术未来展望:EasyCVR如何引领汇聚融合平台新趋势
  • ARM发布新一代高性能处理器N3
  • 【git】git安装方法
  • K8S - 理解volumeMounts 中的subpath
  • 2. GIS数据工程师岗位职责、技术要求和常见面试题
  • HTTP Cookie 和 session
  • 中国次生林林龄分布数据(2020年)
  • 代码随想录冲冲冲 Day37 动态规划Part5
  • 外接串口板,通过串口打开adb模式
  • 今日(2024 年 9 月 4 日)科技新闻
  • macos 系统 降级, 重装, 升级图文教程
  • 【TiDB原理与实战详解】5、BR 物理备份恢复与Binlog 数据同步~学不会? 不存在的!
  • Elasticsearch倒排索引
  • springweb获取请求数据、spring中拦截器
  • 构建数据安全防线:MySQL数据备份策略的文档化实践
  • JavaScript接下来的小项目
  • 【SLAM】GNSS的定义,信号原理以及RTK在多传感器融合中的使用方法
  • 代码随想录算法训练营第五十七天 | 图论part07
  • Eclipse+Java+Swing实现学生信息管理系统