/** * @name 责任链模式 * @brief: 使多个对象都有机会处理请求 * @note 场景:日志过滤系统、审批流程、异常处理链 */ class Handler { public: virtual void handleRequest(int level) = 0; void setNext(Handler* h) { next = h; } protected: Handler* next = nullptr; }; class Manager : public Handler { public: void handleRequest(int level) override { if (level <= 5) { // 处理请求 } else if (next) { next->handleRequest(level); } } }; class Director : public Handler { void handleRequest(int level) override { if (level > 5 && level <= 10) { // 处理请求 } else if (next) { next->handleRequest(level); } } }; // 使用 int main() { Handler* manager = new Manager(); Handler* director = new Director(); manager->setNext(director); manager->handleRequest(3); // Manager处理 manager->handleRequest(7); // Director处理 }