Design patterns 责任范围链

Design patterns 责任范围链,design-patterns,netty,handlers,chain-of-responsibility,Design Patterns,Netty,Handlers,Chain Of Responsibility,嗨,我想知道责任链的范围 一般来说,它是一种常用的模式,它本身就有处理程序,每个处理程序都将功能动作传递给它的主管 我在示例场景中看到的是: "Only one related handler is handling the functionality itself and all the other handlers are just passing through to their supervisor handler." 在这种情况下,是否违反了责任链模式: "Every handl

嗨,我想知道责任链的范围

一般来说,它是一种常用的模式,它本身就有处理程序,每个处理程序都将功能动作传递给它的主管

我在示例场景中看到的是:

"Only one related handler is handling the functionality itself and all the other handlers 
 are just passing through to their supervisor handler."
在这种情况下,是否违反了责任链模式:

"Every handler has the responsibility to take an action instead and after that passing 
 to supervisor.
作为摘要:

Chain of Responsibility Recommended Scenario:
Handler1(Take No Action) --> Handler2 (Take No Action) --> Handler3(Take All Action)

Chain of Responsibility Wondering Scenario:
Handler1(Take Partial Action) --> Handler2(Take No Action) --> Handler(Take Partial Action)
第二种情况适合责任链还是违反责任链


例如,Netty本身就有处理者,所有人都有自己负责的行为,并且他们也在他们之间传递信息。我们可以说Netty handler机制适合责任链吗?

一般来说,责任链涉及您在问题中给出的推荐方案。也就是说,给定一个“command”对象实例,它将从一个处理程序传递到链中的下一个处理程序,直到处理程序处理该命令并完成任务

对于问题中的第二个场景(责任链场景),必须小心,因为您在模式中引入了严重的复杂性。handler1如何知道它只采取了部分行动?如果它假定额外的处理程序将进行处理,那么它将调用额外的处理程序,并且可能没有必要;这是浪费。然而,您将面临的主要问题是。如果多个处理程序(在示例Handler1&Handler中)正在寻找要处理的命令,这意味着对命令的任何更改都可能影响这两个处理程序。这对我来说是一个危险信号,我的责任可能没有得到正确的定义,应该重新审视。总的来说,我对一个类的变化可能会通过一系列其他类产生连锁反应的情况持怀疑态度。在这种情况下,我的首选方法是将执行命令所需的代码提取到处理程序以外的类中,并定义一个处理程序来处理命令,该处理程序可以调用所有提取出来的代码