DesignPatterns/c++/chain_responsibility.cc
2025-07-10 22:26:33 +08:00

45 lines
1008 B
C++

/**
* @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处理
}