责任链模式(Chain of Responsibility)是一种行为设计模式,它允许你将请求沿着处理者链进行传递。每个处理者都可以对请求进行处理,或者将请求传递给链中的下一个处理者。这个模式在处理多个对象都有机会处理请求时特别有用,并且不清楚哪个对象最终会处理请求时非常有效。
下面是一个简单的C++实现例子,其中定义了一个处理请求的抽象基类,以及几个具体的处理者类。每个处理者类都决定自己是否处理请求,或者将请求传递给下一个处理者。
1 | #include <iostream> |
代码说明
Handler 类:
setNext(std::shared_ptr<Handler> nextHandler)
:设置下一个处理者。handleRequest(int request)
:处理请求,根据canHandle
的结果决定是否自己处理或传递给下一个处理者。canHandle(int request) const
和handle(int request) const
:纯虚函数,需要在具体处理者类中实现。
ConcreteHandlerA, ConcreteHandlerB, ConcreteHandlerC 类:
- 每个类都实现了
canHandle
和handle
方法,用于判断和处理特定范围内的请求。
- 每个类都实现了
main 函数:
- 创建处理者对象并设置责任链。
- 发送不同的请求,观察责任链的处理结果。
这个简单的例子展示了责任链模式的基本思想和使用方法。根据实际需求,你可以扩展这个模式来处理更复杂的请求和处理逻辑。