代码实现:
#include <iostream>
using namespace std;
class CarHandler
{
public:
virtual void handleCar() = 0;
CarHandler* setNextHandler(CarHandler* handler)
{
this->handler = handler;
return handler;
}
protected:
CarHandler* handler;
};
class CarHeadHandler : public CarHandler
{
public:
virtual void handleCar()
{
cout << "handle car head" << endl;
if (handler != NULL)
{
handler->handleCar();
}
}
};
class CarBodyHandler : public CarHandler
{
public:
virtual void handleCar()
{
cout << "handle car body" << endl;
if (handler != NULL)
{
handler->handleCar();
}
}
};
class CarTailHandler : public CarHandler
{
public:
virtual void handleCar()
{
cout << "handle car tail" << endl;
if (handler != NULL)
{
handler->handleCar();
}
}
};
void main()
{
CarHandler* headHandler = new CarHeadHandler;
CarHandler* bodyHandler = new CarBodyHandler;
CarHandler* tailHandler = new CarTailHandler;
headHandler->setNextHandler(bodyHandler);
bodyHandler->setNextHandler(tailHandler);
tailHandler->setNextHandler(NULL);
headHandler->handleCar();
delete tailHandler;
delete bodyHandler;
delete headHandler;
}