责任链模式
主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。
#include <iostream>
class CarHandle
{
public:
virtual void handleCar() = 0;
void setNextHandle(CarHandle* handle)
{
m_handle = handle;
}
protected:
CarHandle* m_handle = nullptr;
};
//================================================================
class HeadCarHandle:public CarHandle
{
public:
virtual void handleCar()
{
std::cout << "make car head\n";
if (m_handle)
m_handle->handleCar();
}
};
//================================================================
class BodyCarHandle :public CarHandle
{
public:
virtual void handleCar()
{
std::cout << "make car body\n";
if (m_handle)
m_handle->handleCar();
}
};
//================================================================
class TailCarHandle :public CarHandle
{
public:
virtual void handleCar()
{
std::cout << "make car tail\n";
if (m_handle)
m_handle->handleCar();
}
};
//================================================================
int main()
{
CarHandle* head = new HeadCarHandle;
CarHandle* body = new BodyCarHandle;
CarHandle* tail = new TailCarHandle;
head->setNextHandle(body);
body->setNextHandle(tail);
head->handleCar();
return 0;
}