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

设计模式-责任链模式:让请求像流水线一样自由流转

🔍 引言:为什么需要责任链模式?

场景痛点:
想象一个请假审批系统:

  • 普通员工请假 ≤3天 → 组长审批
  • 3天 < 请假 ≤7天 → 经理审批
  • 请假 >7天 → CEO审批

如果用传统的if-else实现:

if (days <= 3) {
   
    groupLeader.approve();
} else if (days <=7) {
   
    manager.approve();
} else {
   
    ceo.approve();
}

问题暴露:

  • 新增审批层级需要修改原有代码 ❌
  • 审批逻辑与业务代码高度耦合 ❌
  • 难以动态调整审批流程 ❌

责任链模式的价值:

  • 解耦请求与处理:请求像击鼓传花一样在链中传递
  • 动态扩展节点:新增处理器只需扩展链条
  • 灵活流程控制:支持顺序处理、短路拦截等场景

📚 一、责任链模式核心概念

1.1 定义与本质

官方定义:

  • 将请求的发送者和接收者解耦,使多个对象都有机会处理该请求。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。

通俗理解:

  • 处理器节点:每个节点都像收费站,可选择拦截或放行
  • 处理链条:多个节点组成处理流水线

1.2 生活场景类比

场景:网购退货流程

  • 处理器接口:退货审核标准
  • 具体处理器
    • 客服初审(检查单据完整性)
    • 质检审核(验证商品状态)
    • 财务处理(退款操作)
  • 客户端:用户提交退货申请

🔧 二、责任链模式原理与结构

2.1 UML结构图


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

相关文章:

  • 2、k8s的cni网络插件和基本操作命令
  • MySQL开窗函数种类和使用总结
  • 协议-RK-Gstreamer
  • 介绍10个比较优秀好用的Qt相关的开源库
  • 化学-基础知识一
  • go并发和并行
  • 19 角度操作模块(angle.rs)
  • 在 Open WebUI+Ollama 上运行 DeepSeek-R1-70B 实现调用
  • Unity项目接入xLua的一种流程
  • Java 中的 List 接口有哪些实现类?
  • c/c++蓝桥杯经典编程题100道(9)数组排序
  • 金和OA C6 DownLoadBgImage任意文件读取漏洞
  • Spinrg Security 浅谈
  • 后盾人JS -- 类类的
  • AtCoder Beginner Contest 391(A~E题题解)
  • MySQL InnoDB锁机制深度解析及高并发场景调优实践
  • Ubuntu20.4软件应用打不开
  • DeepSeek 实现原理探析
  • Windows安装cwgo,一直安装的是linux平台的
  • 【Redis】redis 存储的列表如何分页和检索
  • 【机器学习】超参数的选择,以kNN算法为例
  • 使用wireshark抓取python发起的https请求包
  • 海思的一站式集成环境Hispark Studio更新了
  • 机试题——第k大字母
  • 【stm32学习】STM32F103实操primary(FlyMCU)
  • 解锁 DeepSeek 模型高效部署密码:蓝耘平台全解析