请人清除了我与这些模式在我脑海中的混乱:在什么情况下,命令链设计模式适用?
- 指挥链
- 责任链
我见过很多网站,其中两个是相同的(与责任链相同的命令链的例子)以及其他不在的网站。
这是我了解每个:
CHAIN命令:
一类我们称之为CommandChain,以持有物业“命令”,这是类的实例的一个列表,它实现相同的界面。假设他们都必须实现onCommand(命令,参数)。
CommandChain有addCommand()方法来注册它内的新命令,runCommand()它接受一个命令名及其参数。这个方法应该遍历命令列表,直到其中的一个响应,执行相应的操作并发送正常。责任
正如我在一些网站已经看到了
链,这将是几乎相同的,与此不同: 而不是一类存储命令列表循环的通过,每个命令实例都会存储对下一个命令实例的引用。
那么,这种差异是否足够大以考虑两种设计模式的不同?
它们在哪些实际情况下适用?
他们有相同的行为毕竟,即使第一次一个存储在主类的属性的处理程序,并在第二届每个处理器包含参考下一个。我认为这也可能是决定他们考虑他们不同的模式。 什么样的实现可能会更好,正如我问Atul:在Web开发中通常情况下这种模式是否适用? –
如果处理程序的#趋向于被固定的和已知的在它们被建立时,像第一一个的实现是从性能的角度来看优选的,因为你可以然后分配处理程序作为一个数组。这保存了参考公关的指针。处理程序。至于模式的适用性:许多情况。通常当你想有一些默认行为(链的末尾,一个全部处理程序)和几个“特例”处理程序。 –