【发布时间】:2012-10-03 09:07:03
【问题描述】:
请有人用这些模式清理我脑海中的混乱:
- 指挥链
- 责任链
我见过两者相同的网站(命令链示例与责任链相同),而其他网站则不同。
这是我对每个的理解:
指挥链:
我们称它为 CommandChain 的类,其属性包含一个“命令”列表,这些命令是实现相同接口的类的实例。假设他们都必须实现 onCommand(command, arguments)。
CommandChain 具有在其中注册新命令的 addCommand() 方法,以及接受命令名称及其参数的 runCommand() 方法。此方法应循环遍历命令列表,直到其中一个响应、执行相应操作并发送 ok。
责任链
正如我在某些网站上看到的那样,这几乎是相同的,但有以下区别: 每个命令实例都将存储对下一个命令实例的引用,而不是让一个类存储要循环的命令列表。
那么,这种差异是否足以认为两种设计模式不同?
它们适用于哪些实际情况?
【问题讨论】:
标签: php design-patterns web-applications chain-of-responsibility