首页
学习
活动
专区
圈层
工具
发布

责任链
EN

Stack Overflow用户
提问于 2015-09-02 12:56:23
回答 2查看 190关注 0票数 0

如果我可以编写CoR,而不是遍历多个处理程序,那么我为什么需要使用if-else,我只需要找到所需的处理程序,并将处理委托给特定的处理程序。

我认为,CoR没有被用作在多个处理程序中处理相同请求的管道(如:cpp/blob/master/main.cpp)。那么,我为什么要使用CoR呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-02 13:16:31

CoR的优点是什么?

正确的是,它是一种管道;管道的每一步都通过基类接口与下一步交互。如果每个管道步骤不依赖/直接与前面步骤的上下文绑定,则可以使用它。

每一个类别都将实施自己的管道阶段,优点是:

  • 模块化:每个管道类都处理其定义良好的方面/命令;每个命令对象/管道阶段的代码应该更干净,更易于阅读/维护。
  • 一个优点是可以分别调试/测试这些类,独立于命令/管道类的其余部分;如果有单元测试,这是很棒的。
  • 您可以在工厂/构建器类中配置不同的管道实例,并将命令类视为构建块,并根据配置/实际需求将它们堆叠起来。 一个例子是日志阶段;您将添加一个只进行日志记录并将其添加到管道末尾的派生类,我必须记录一个事件;如果您处于“无日志记录模式配置”,则不会对此命令对象进行叠加。
票数 1
EN

Stack Overflow用户

发布于 2015-09-02 13:07:45

如果在一种情况下必须执行链中10个元素中的4个元素,在另一个情况下执行2个元素,在另一个情况下执行9个元素,那么CoR显然比大量嵌套的If语句更好。

考虑经典的实现,例如验证器链。在特定情况下,您可以插入或删除一些验证器,在第一次验证错误时可能会失败,或者只需要收集所有验证程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32353808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档