设计模式——22. 责任链模式

news/2024/5/19 14:24:46 标签: 设计模式, 责任链模式, java, python, javascript, golang, c++

1. 说明

责任链模式是一种行为设计模式,它允许你创建一个对象链,每个对象都包含了请求的一部分处理逻辑,并且请求按照链的顺序依次传递,直到有一个对象处理它为止。责任链模式通常用于将一个请求从发送者传递给多个接收者,直到有一个接收者处理请求为止。
责任链模式的核心概念包括以下要点:

  1. 处理者对象链: 责任链由多个处理者(处理对象)组成,每个处理者都知道下一个处理者。请求从链的起点进入,然后依次沿着链传递,直到某个处理者能够处理请求。
  2. 请求处理: 每个处理者都有一个处理请求的方法,当它无法处理请求时,会将请求传递给链中的下一个处理者。处理者可以决定是否处理请求,也可以将请求传递给下一个处理者。
  3. 动态性: 责任链模式允许你在运行时动态添加或删除处理者,因此可以灵活地调整处理逻辑。
  4. 避免显式引用: 请求发送者不需要知道链中的哪个处理者将处理请求,它只需要将请求发送到链的起点。

责任链模式通常用于以下情况:

  • 当有多个对象可以处理请求,但请求的处理者在运行时确定。
  • 当请求的发送者和接收者之间需要解耦,以便更容易地添加或修改处理者。
  • 当需要按照一定顺序处理请求。

一个常见的例子是审批流程,其中不同级别的审批者依次审批请求,直到最终决策被达成。责任链模式可以有效地支持这种工作流程。

2. 使用的场景

责任链模式通常用于以下情况和场景:
3. 请求的处理者不确定: 当请求的处理者在运行时才能确定,并且需要动态配置或修改处理逻辑时,责任链模式非常有用。这使得可以轻松地添加、移除或重新排序处理者,而无需更改请


http://www.niftyadmin.cn/n/5091767.html

相关文章

设计模式再探——适配器模式

目录 一、背景介绍二、思路&方案三、过程1.适配器模式简介2.适配器模式的类图3.适配器模式代码4.适配器模式,类适配器模式和对象的对比5.适配器模式终极奥秘 四、总结五、升华 一、背景介绍 最近公司在对业务模型做构建的时候,涉及到和三方系统的对…

【综合类型第 39 篇】HTTP 状态码详解

这是【综合类型第 39 篇】,如果觉得有用的话,欢迎关注专栏。 注: 本篇博客只是在「阿里云开发者社区版 HTTP 状态码详解」中按自己的写作风格做了断句,归纳整理,方便查看和阅读。 尊重原创,原文链接&…

异步代码执行顺序

js引擎对异步代码优先级进行划分:微任务、宏任务。 微任务: process.nextTick 只有nodejs有 queueMicrotask将函数添加到微任务队列 promise.then().catch().finally() 成功失败都会触发finally()中的回调,pending是不会触发的。 微任务优先级…

word调整标题编号

需求 给上面的“能源站群控”编号,自动生成编号 3.3.1.2.3.1 步骤 第一步:选中“空调系统”,右键,段落,查看 空调系统的 大纲级别 第二步:选中“能源站群控”,右键,段落&#xff0…

【内联函数和构造函数的联系】

内联函数和构造函数是C中的两个不同的概念,它们在对象的生命周期和程序性能方面有不同的作用。然而,它们可以在某些情况下相互关联,尤其是在创建对象并使用构造函数时。 构造函数的作用: 构造函数是用于初始化类对象的特殊成员函数…

SpringCloud:分布式事务Seata部署和集成

一、部署Seata的tc-server 1.下载 首先我们要下载seata-server包,地址在http://seata.io/zh-cn/blog/download.html 2.解压 在非中文目录解压缩这个zip包,其目录结构如下: 3.修改配置 修改conf目录下的registry.conf文件: 内容…

第三节:利用运行按钮运行VBA代码

《VBA之Excel应用》(10178983)是非常经典的,是我推出的第七套教程,定位于初级,目前是第一版修订。这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,实例众多。大家可以非…

qt-C++笔记之按行读取文件并切换复选框打印复选框拼接出的字符串

qt-C笔记之按行读取文件并切换复选框打印复选框拼接出的字符串 code review! 文章目录 qt-C笔记之按行读取文件并切换复选框打印复选框拼接出的字符串1.运行2.文件结构3.main.cc4.main.pro5.a.txt6.b.txt 1.运行 2.文件结构 3.main.cc 代码 #include <QApplication> #…