c++如何实现一个责任链模式_c++行为型设计模式Chain of Responsibility【源码】

admin 百科 12
责任链模式在C++中通过抽象处理者Handler定义处理接口和后继引用,具体处理者按需处理或转发请求,客户端调用链头即可自动流转;示例含Level1/Level2Handler及unique_ptr链式组装。

c++如何实现一个责任链模式_c++行为型设计模式Chain of Responsibility【源码】-第1张图片-佛山资讯网

责任链模式在 C++ 中的核心是:让多个对象都有机会处理请求,避免请求发送者与接收者耦合,将这些对象连成一条链,并沿着这条链传递请求,直到有对象处理它为止。

定义抽象处理者(Handler)

这是责任链的基类,负责声明处理接口和持有下一个处理者的引用。关键点是“可选地”向下转发请求,由子类决定是否处理或继续传递。

  • 用纯虚函数 handleRequest() 定义处理逻辑契约
  • std::unique_ptr 或原始指针(需手动管理)保存 successor(后继)
  • 提供 setNext() 方法方便链式组装(返回 *this 支持流式调用更佳)

实现具体处理者(ConcreteHandler)

每个具体类继承 Handler,重写 handleRequest():先判断是否能/应处理当前请求;若不能,调用 next->handleRequest() 转发。

  • 判断条件可以是请求类型(如 int code)、内容(如 string cmd)、权限级别等
  • 注意避免空指针解引用:检查 next 是否非空再调用
  • 可选择“处理后仍转发”(日志+授权)或“处理即终止”(权限拦截)

构建与使用责任链

链通常在客户端手动创建,也可封装进工厂或配置类。推荐使用 RAII 管理生命周期(如用 unique_ptr 构建)。

标签: 处理器 ai c++

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~