该模式构造一系列分别担当不同职责的类的对象来共同完成一个任务,这些类的对象之间像链条一样紧密相连,所以被称为责任链模式。
class CarHandle {
public:
virtual void HandleCar()=0;
CarHandle* setnextHandle(CarHandle *handle)
{
this->m_carhandle = handle;
return m_carhandle;
}
protected:
CarHandle *m_carhandle;
};
class HeadCarHandle :public CarHandle
{
virtual void HandleCar() {
cout << "车头" << endl;
if (m_carhandle != NULL) {
m_carhandle->HandleCar();
}
}
};
class BodyCarHandle :public CarHandle
{
virtual void HandleCar() {
cout << "车身" << endl;
if (m_carhandle != NULL) {
m_carhandle->HandleCar();
}
}
};
class TailCarHandle :public CarHandle
{
virtual void HandleCar() {
cout << "车尾" << endl;
if (m_carhandle != NULL) {
m_carhandle->HandleCar();
}
}
};
void main()
{
CarHandle *headhandle = new HeadCarHandle;
CarHandle *Bodyhandle = new BodyCarHandle;
CarHandle *Tailhandle = new TailCarHandle;
headhandle->setnextHandle(Bodyhandle);
Bodyhandle->setnextHandle(Tailhandle);
Tailhandle->setnextHandle(NULL);
headhandle->HandleCar();
delete Tailhandle;
delete Bodyhandle;
delete headhandle;
system("pause");
}
这里我们可以理解成和链表的实现差不多,在执行该任务的时候就决定下一个任务是什么。