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