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

国家卫生计生委建设监管网站网站seo优化技巧

国家卫生计生委建设监管网站,网站seo优化技巧,centos7装wordpress,应城网站建设深入解析责任链模式:用C打造灵活的请求处理链 引言:当审批流程遇上设计模式 在软件系统中,我们经常会遇到这样的场景:一个请求需要经过多个处理节点的判断,每个节点都有权决定是否处理或传递请求。就像企业的请假审批…

深入解析责任链模式:用C++打造灵活的请求处理链


引言:当审批流程遇上设计模式

在软件系统中,我们经常会遇到这样的场景:一个请求需要经过多个处理节点的判断,每个节点都有权决定是否处理或传递请求。就像企业的请假审批流程,可能经历「主管→经理→总监」三级判断。如何优雅地实现这种传递机制?责任链模式给出了完美解决方案。


一、责任链模式核心思想

1.1 模式定义

责任链模式(Chain of Responsibility)通过将多个处理对象连接成链,并沿着链条传递请求,直到有对象处理它为止。这种模式实现了请求发送者与接收者的解耦。

1.2 模式结构

  • Handler:定义处理请求的接口,维护后继者引用
  • ConcreteHandler:具体处理者,实现处理逻辑
  • Client:装配处理链,发起请求

二、C++实现请假审批系统

我们以三级审批流程为例,演示如何用C++实现责任链模式。

2.1 抽象处理者

#include <iostream>
#include <memory>// 请假请求结构体
struct LeaveRequest {int employeeId;std::string name;int leaveDays;
};// 抽象处理者
class Handler {
protected:std::shared_ptr<Handler> nextHandler;public:virtual ~Handler() = default;void setNext(std::shared_ptr<Handler> handler) {nextHandler = handler;}virtual void handleRequest(const LeaveRequest& request) = 0;
};

 2.2 具体处理者实现

// 主管审批(处理<=3天的请假)
class Supervisor : public Handler {
public:void handleRequest(const LeaveRequest& request) override {if (request.leaveDays <= 3) {std::cout << "主管批准了" << request.name << "的" << request.leaveDays << "天请假
";} else if (nextHandler) {nextHandler->handleRequest(request);}}
};// 部门经理审批(处理<=7天的请假)
class Manager : public Handler {
public:void handleRequest(const LeaveRequest& request) override {if (request.leaveDays <= 7) {std::cout << "经理批准了" << request.name << "的" << request.leaveDays << "天请假
";} else if (nextHandler) {nextHandler->handleRequest(request);}}
};// 总经理审批(处理>7天的请假)
class GeneralManager : public Handler {
public:void handleRequest(const LeaveRequest& request) override {if (request.leaveDays > 7) {std::cout << "总经理批准了" << request.name << "的" << request.leaveDays << "天请假
";} else if (nextHandler) {nextHandler->handleRequest(request);}}
};

2.3 构建责任链

int main() {// 创建处理者auto supervisor = std::make_shared<Supervisor>();auto manager = std::make_shared<Manager>();auto generalManager = std::make_shared<GeneralManager>();// 构建责任链supervisor->setNext(manager);manager->setNext(generalManager);// 模拟请假请求LeaveRequest requests[] = {{101, "张三", 2},{102, "李四", 5},{103, "王五", 9}};// 处理所有请求for (const auto& req : requests) {std::cout << "\n处理" << req.name << "的请求:n";supervisor->handleRequest(req);}return 0;
}

2.4 运行结果

处理张三的请求:
主管批准了张三的2天请假处理李四的请求:
经理批准了李四的5天请假处理王五的请求:
总经理批准了王五的9天请假

三、模式应用场景

  1. 多级过滤系统:如敏感词过滤、网络请求拦截
  2. 动态流程处理:可配置的审批流程
  3. 事件处理系统:GUI事件冒泡机制
  4. 中间件管道:Web服务器中间件处理

四、模式优缺点分析

优势

  • 请求与处理解耦
  • 动态调整处理链顺序
  • 符合开闭原则(新增处理者无需修改已有代码)

局限

  • 请求可能未被处理(需设置默认处理)
  • 长链影响性能(可考虑设置最大传递次数)

五、扩展与变体

  1. 组合模式:处理链嵌套形成树形结构
  2. 拦截过滤器:处理完成后反向传递
  3. 异步责任链:非阻塞式处理(需考虑线程安全)

结语:链式思维的力量

        责任链模式将离散的处理节点组织成灵活的执行链路,这种设计思想在C++标准库中也有体现(如异常处理栈)。掌握该模式的关键在于理解处理节点的独立性,以及如何构建高效的传递机制。当你的系统需要灵活多变的处理流程时,不妨考虑让责任链来大显身手!

 

http://www.dtcms.com/wzjs/418440.html

相关文章:

  • 福州火车站最新消息seo是一种利用搜索引擎
  • 旅游电子商务网站建设试题百度服务电话6988
  • 专注东莞微信网站设计郑州网站公司哪家好
  • html编程语言seo求职信息
  • 扬州建设局网站网络营销的基本流程
  • 美国专门做特卖的网站有哪些如何快速搭建一个网站
  • 怎么做网站文章伪原创百度seo和谷歌seo有什么区别
  • 陕西专业网站建设价格游戏推广话术技巧
  • 网站开发是先给钱还是百度短链接在线生成
  • 自己做的网站怎么设置文件下载外贸推广具体是做什么
  • 深圳网站建设 网站设计什么是优化设计
  • 电子商务网站建设实训论文b2b网站免费推广平台
  • 怎么做可以看外国视频网站友链交换平台源码
  • 搭建网站服务器多少钱企业培训内容包括哪些内容
  • 中国自助主做网站有哪些免费推广途径与原因
  • 如何开发手机端网站拓客软件哪个好用
  • 个人域名可以做企业网站吗品牌营销策划怎么写
  • 乌海网站建设色盲测试图动物
  • 易烊千玺个人网站入口seo网站推广是什么
  • 想学网络营销网站建设小红书seo排名
  • 重庆模板网站建设网页制作的软件有哪些
  • 怎么在自己的网站上做链接百度公司推广
  • 做计算机网站有哪些功能沈阳专业网站seo推广
  • 哪里可以下企业网站模板举出最新的网络营销的案例
  • 做电影网站程序好用吗营销顾问
  • 沈阳住房建设局网站百度推广开户联系方式
  • 武汉专业网站设计公司2023年6月份疫情严重吗
  • 怎么为自己做的网站申请域名网盘资源搜索神器
  • 找人做网站 多少钱开封网站推广公司
  • 微官网和手机网站区别制作自己的网站