当前位置: 首页 > 网络知识

C++ 设计模式之责任链模式

时间:2026-01-27 08:39:58

设计模式之责任链模式


责任链模式,使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象练成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。该模式很好理解,其UML图如下:

每个ConcreteHandler都有一定的请求处理能力,当自己处理不了的时候就把请求转移给自己的后继者。所以每个ConcreteHandler都有一个Handler的引用。示例代码如下:

1 // ChainofResponsibilityModel.h文件 2 #pragma once 3 #include <iostream> 4 5 class Handler 6 14 virtual void processRequest(int n) = 0; 15 }; 16 17 class ConcreteHandler_0 : public Handler 18 26 else if (nullptr != m_sucessor) 27 30 else 31 34 } 35 }; 36 37 class ConcreteHandler_1 : public Handler 38 46 else if (nullptr != m_sucessor) 47 50 else 51 54 } 55 }; 56 57 class ConcreteHandler_2 : public Handler 58 66 else if (nullptr != m_sucessor) 67 70 else 71 74 } 75 };

测试代码如下:

#include <iostream> #include "ChainofResponsibilityModel.h" int main()

其测试结果如下图:

  责任链模式的优点是当客户提交一个请求时,请求时沿链传递直至有一个ConcreteHandler对象负责处理它。这就使得接收者和发送者都没有对方的明确信息,且链中的对象自己也不知道链的结构。结果是责任链可简化对象的相互连接,它们仅需保持一个指向后继的引用,而不需保持它素有的候选接收者的引用。而链的结构是由客户端来定义的。可以随时增加或修改吃力一个请求的结构。增强了给对象指派职责的灵活性。



上一篇:C++ OpenMP、TBB库的简单使用
下一篇:C++ 设计模式之装饰模式
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素