Lui*_*tin 2 php design-patterns web-applications chain-of-responsibility
请有人用这些模式来清理我头脑中的混乱:
我见过一些网站两者都是相同的(指挥链的示例与责任链相同),而其他网站则不同。
这是我对每一个的理解:
命令链:
我们将类称为 CommandChain,其属性包含“命令”列表,这些命令是实现相同接口的类的实例。假设他们都必须实现 onCommand(command,arguments)。
CommandChain 具有用于在其中注册新命令的 addCommand() 方法,以及接受命令名称及其参数的 runCommand() 方法。此方法应循环遍历命令列表,直到其中一个命令响应、执行相应操作并发送 ok。
责任链
正如我在某些站点中看到的那样,这几乎是相同的,但有一个区别:每个命令实例将存储对下一个命令实例的引用,而不是让类存储要循环的命令列表。
那么,这种差异是否大到足以认为两种设计模式不同?
它们适用于哪些实际案例?
它们是相同的设计模式。
如果它们具有相同的属性并且仅实现不同,那么它们在功能上是相同的。这表明这两种设计模式是同一个。
另一个提示是,有一个关于责任链 DP 的维基百科页面,但没有关于指挥链的页面。
撰写有关 DP 的开创性著作的“四人帮”非常清楚,定义设计模式的是行为和属性,而不是实现。
| 归档时间: |
|
| 查看次数: |
4941 次 |
| 最近记录: |