设计模式---责任链模式(C++实现)

本文通过C++代码示例介绍了责任链设计模式的概念及其应用。该模式利用单链表结构串联多个处理节点,形成链条式的处理流程。适用于工作流程化、消息处理流程化等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/****************************************************************************************************
链式
概念(使用一个单链表,尾结点指向空,然后挨个遍历此结点指向的函数(这些函数都来自与抽象类中函数的重写)
将则责任链上的对象统统创建出来,然后执行到哪个对象,哪个对象就去调用这个重写的函数方法)
适用于:
链条式处理事情。工作流程化、消息处理流程化、事物流程化;


****************************************************************************************************/
#include <iostream>
using namespace std;
class CarHandle//责任链,设计一个类将其创建成链
{
public:
virtual void HandleCar() = 0;
public:
CarHandle *setNextHandle(CarHandle *carhandle)
{
this->carhandle = carhandle;
return this->carhandle;
}
protected:
CarHandle *carhandle;
};
class CarHandleHead : public CarHandle
{
public:
virtual void HandleCar()
{
cout << "处理车头" << endl;
if (this->carhandle != NULL)
{ carhandle->HandleCar(); }
}
};
class CarHandleBody : public CarHandle
{
public:
virtual void HandleCar()
{
cout << "处理车身" << endl;
if (this->carhandle != NULL)
{ carhandle->HandleCar(); }
}
};
class CarHandleTail : public CarHandle
{
public:
virtual void HandleCar()
{
cout << "处理车尾" << endl;
if (this->carhandle != NULL)
{ carhandle->HandleCar(); }
}
};
class CarHandleyou : public CarHandle
{
public:
virtual void HandleCar()
{
cout << "handle you" << endl;
if (this->carhandle != NULL)
{
carhandle->HandleCar();
}
}
};
void main()
{
CarHandleHead *head = new CarHandleHead;
CarHandleBody *body = new CarHandleBody;
CarHandleTail *tail = new CarHandleTail; //这里是创建一些列的对象,对象包含下一个结点的指针
CarHandleyou  *you = new CarHandleyou;
head->setNextHandle(body);//在这里将这些函数使用链表串起来
body->setNextHandle(tail);
tail->setNextHandle(you);
you->setNextHandle(NULL);


//处理
head->HandleCar();
delete head;
delete body;
delete tail;
delete you;
system("pause");

}

参考: 传智播客--王保明


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值