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

    xiaoxiao2021-03-25  61

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

    }

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

    转载请注明原文地址: https://ju.6miu.com/read-40246.html

    最新回复(0)