命令链设计模式适用于什么情况?

Lui*_*tin 2 php design-patterns web-applications chain-of-responsibility

请有人用这些模式来清理我头脑中的混乱:

  • 命令链
  • 责任链

我见过一些网站两者都是相同的(指挥链的示例与责任链相同),而其他网站则不同。

这是我对每一个的理解:

命令链:

我们将类称为 CommandChain,其属性包含“命令”列表,这些命令是实现相同接口的类的实例。假设他们都必须实现 onCommand(command,arguments)。

CommandChain 具有用于在其中注册新命令的 addCommand() 方法,以及接受命令名称及其参数的 runCommand() 方法。此方法应循环遍历命令列表,直到其中一个命令响应、执行相应操作并发送 ok。

责任链

正如我在某些站点中看到的那样,这几乎是相同的,但有一个区别:每个命令实例将存储对下一个命令实例的引用,而不是让类存储要循环的命令列表。

那么,这种差异是否大到足以认为两种设计模式不同?

它们适用于哪些实际案例?

And*_*sen 6

它们是相同的设计模式。

如果它们具有相同的属性并且仅实现不同,那么它们在功能上是相同的。这表明这两种设计模式是同一个。

另一个提示是,有一个关于责任链 DP 的维基百科页面,但没有关于指挥链的页面。

撰写有关 DP 的开创性著作的“四人帮”非常清楚,定义设计模式的是行为和属性,而不是实现。