问题标签 [chain-of-responsibility]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1152 浏览

java - java中多线程和异常处理的责任链

我有一个责任链的 Rest 服务调用,为了更好的性能,我们添加了多线程但无法处理异常请查找代码示例:从 Rest Service 方法开始

HandlerExecutor.java:

处理程序定位器.java:

处理程序.java:

基本处理程序.java

与 ConsoleHandler 相同,我们有 FileHandler、FinalHandlers

所以,问题是这些:

  1. run 方法返回 void 所以,如果ConsoleHandler抛出异常,有什么方法可以处理异常吗?
  2. 如果执行的第二个处理程序失败,如何回滚?
0 投票
3 回答
756 浏览

java - 使用泛型实现责任链

所以我想实现责任链,但使用泛型,有上限。

当然,我可以拥有非泛型类,并在任何地方都将 Command 作为参数,这样就可以了。但是我不想在 doHandle 方法中使用强制转换来传递给相应的 Command 子类型。我想为每个子类型、泛型都有一个处理程序,然后将它们链接起来。

我得到的问题是:类型处理程序中的方法 doHandle(capture#3-of ? extends Command) 不适用于参数(C)

为什么如果 C 扩展命令?

0 投票
1 回答
4270 浏览

java - 如何在 Java 中实现动态责任链?

我对业务逻辑验证有一组要求:

  1. 验证的每个独立步骤必须分开;
  2. 这些步骤的顺序可以由管理员定义;
  3. 可以禁用步骤。
  4. 每个验证步骤都不是用户定义的——即编译代码。

所以我想实现一个动态的责任链,从表中加载步骤顺序和类名,用Class.forName(). 但是我不太喜欢将 className 存储在表中,因为这可能会导致潜在的问题(例如,重构验证器的名称只会破坏代码)。这就是我所做的:

在此处输入图像描述

当然,解决方案越灵活,就越复杂。不过,我想知道是否有办法保证上述要求而不将类名存储在表中?

0 投票
0 回答
95 浏览

c#-4.0 - 是否有用于验证的设计模式?

是否应该使用任何适当的设计模式来进行验证?

例如,假设我有一个应用程序,其中包含一个带有图标的工具栏,每个图标代表我文件系统上的一张图片。我在文档上拖动一个图标。拖放操作期间的验证可能是:

  1. 检查文件是否存在于文件系统中
  2. 检查用户是否有权拖动图标
  3. 检查文档是否打开,以便将图片放在上面

等等...

我想过使用责任链或装饰器模式。

谢谢!

0 投票
1 回答
1278 浏览

c# - 管道处理引擎

P1流程执行,P1输出作为输入进入P2流程。P2 也将执行。只有当 P2 和 P3 完成过程时,P4 才应该启动。P4 进程不会启动,因为输入进程 P3 尚未处理(P2 输入现在可用)。

任何将触发 P4 执行过程的输入参数触发机制。我需要任何可以解决上述问题的标准设计模式或示例代码(C#)。

还需要我们可以在 .net 3.5 框架中并行执行进程的任何标准方式。

0 投票
2 回答
183 浏览

design-patterns - 责任链

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

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

0 投票
1 回答
2188 浏览

design-patterns - 队列或堆栈中的责任链与命令

为什么我需要使用责任链,如果我可以将所有命令加载到某个容器中并一一执行命令。这将连续处理一个请求。顺便说一句,我觉得它比 CoR 更好,因为您可以在运行时删除一些特定命令或替换为另一个命令,而对于 CoR,您需要创建另一个链来更改链中的某些内容,因为您无法访问链除了第一个元素。(实际上,它是一个单链表。)

0 投票
2 回答
1509 浏览

java - 为什么我要在 switch 语句上使用责任链

考虑到你有几个验证。只有当要检查的对象属于某种类型时,这些验证才会生效。为什么我要在 switch 语句上使用责任链?

责任链示例

验证器工厂创建验证器链。一个验证器看起来像

带有 switch 语句的示例

0 投票
1 回答
368 浏览

java - 责任链的使用

我想使用模式责任链来检查位置(纬度和经度)是否在距离上。为此,我得到了一个布尔值,如果位置在距离上,则该值为真,否则为假。在模式之前 - 我的代码如下所示:

我的责任链代码的一部分(我有四个像这样的类):

代码可以工作,但由于“布尔返回”,它会遍历链,然后它会完全返回以执行此返回。

我的问题:首先 - 责任链是“替换”这个 if 语句的合适方式。有没有办法阻止链一直返回以执行所有返回,或者更确切地说,我可以使用什么来代替这个布尔值?

谢谢!

0 投票
2 回答
3238 浏览

design-patterns - 责任链与有限状态机 - 差异

因此,作为一名电工和程序员,我认为我非常了解 FSM 设计模式。这是:

  • 我们有一组Nodes
  • 每个人都Node知道,该做什么,当程序在这个节点时,
  • 每个Node contains references to another chosen nodes人,并且知道在什么条件下,他应该前往所选择的人。
  • eventafter processing一个节点上,Node proceeds到下一个选择的节点

我想,这对我来说很清楚。虽然最近,当我实施状态机时,一个人告诉我,它实际上是一个有点修改的责任链(不确定他是否正确)并且,我所做/拥有的是:

  • 集合Nodes(不代表线性或树结构)
  • 节点有对象,知道在什么条件下他们应该跳转到哪个节点
  • 每个节点都有自己的处理上下文(上下文的某些部分在节点之间共享)。

不幸的是,我担心由于法律问题,我不允许在这里粘贴类图。


另一方面,我们有责任链,我会(据我了解)以以下方式定义,即:

  • 我们有一些ItemToProcess接口,
  • 我们有一些Node接口,
  • 节点只有一个下一个节点的引用,
  • 每个节点处理ItemToProcess并将处理过的一个转发给nextNode

据我了解:

  • 我们使用Chain Of Responsibility, 我们希望每个节点处理(或至少尝试处理)一个项目
  • 责任链代表流程的连续和持续执行
  • 我们StateMachine用来表示图
  • 我们用于StateMachine执行计算,计算的顺序或种类可能因某些事件而异。

我想请您确认我对这些设计模式的理解,或者告诉我我在哪里理解错误。