行为型模型 责任链模式
行为型模型 责任链模式
Handler
处理类的抽象父类。
concreteHandler
具体的处理类。
责任链优缺点
优点:
1。责任的分担。每个类只需要处理自己该处理的工作(不该处理的传递给下一个对象完成),明确各类的责任范围,符合类的最小封装原则。
2。可以根据需要自由组合工作流程。如工作流程发生变化,可以通过重新分配对象链便可适应新的工作流程。
3。类与类之间可以以松耦合的形式加以组织。
缺点:
因为处理时以链的形式在对象间传递消息,根据实现方式不同,有可能会影响处理的速度。
适用于:
链条式处理事情。工作流程化、消息处理流程化、事物流程化;
/** * 行为型模型 责任链模式 * Command模式也叫命令模式 ,是行为设计模式的一种。 * Chain of Responsibility(CoR)模式也叫职责链模式或者职责连锁模式,是行为模式之一, * 该模式构造一系列分别担当不同的职责的类的对象来共同完成一个任务,这些类的对象之间像链条一样紧密相连,所以被称作职责链模式。 * */ #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #include <list> class CarHandle { public: CarHandle * setNextHandle(CarHandle * carhandle) { this->carhandle = carhandle; return this->carhandle; } virtual void HandleCar() = 0; virtual ~CarHandle() {} protected: // 注意: 此变量为保护属性 CarHandle * carhandle; }; class CarHandleHead: public CarHandle { public: virtual void HandleCar() override { std::cout << "处理车头" << std::endl; if (this->carhandle != nullptr) { this->carhandle->HandleCar(); } } }; class CarHandleBody: public CarHandle { public: virtual void HandleCar() override { std::cout << "处理车身" << std::endl; if (this->carhandle != nullptr) { this->carhandle->HandleCar(); } } }; class CarHandleTail: public CarHandle { public: virtual void HandleCar() override { std::cout << "处理车尾" << std::endl; if (this->carhandle != nullptr) { this->carhandle->HandleCar(); } } }; void mytest() { CarHandleHead * head = new CarHandleHead(); CarHandleBody * body = new CarHandleBody(); CarHandleTail * tail = new CarHandleTail(); head->setNextHandle(body); body->setNextHandle(tail); tail->setNextHandle(nullptr); head->HandleCar(); delete head; head = nullptr; delete body; body = nullptr; delete tail; tail = nullptr; return; } int main() { mytest(); system("pause"); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南