我在这个链接中读取命令模式 Command Design Pattern in Java – Example Tutorial
它说的命令模式
命令模式很容易扩展,我们可以在接收器中添加新的操作方法,并在不更改客户端代码的情况下创建新的Command实现。
如果我们添加新命令,客户端代码必须如何更改。如果我想添加DeleteCommand,请参阅上面的代码示例。客户端程序main必须改正,我的意思是他需要代码到客户端代码。
更改词的含义究竟意味着什么?这是否意味着我们不需要更改现有代码,但我们可以添加新代码。这是命令模式可扩展的含义吗?
答案 0 :(得分:0)
来自https://en.wikipedia.org/wiki/Command_pattern
我认为这一段在解释模式方面做得更好。比整篇文章。
<强>理由/用途:强>
使用命令对象可以更轻松地构建常规组件 需要委托,排序或执行方法调用的时间 他们的选择无需了解方法的类别或 方法参数。
<强>设计强>
与命令模式始终相关的四个术语是命令, 接收者,调用者和客户端。命令对象知道接收器 并调用接收器的方法。 参数的值 接收方法存储在命令中。然后接收器做了 工作。调用者对象知道如何执行命令,并且可选 关于命令执行的簿记。调用者没有 知道关于具体命令的任何事情,它只知道命令 接口。调用对象和几个命令对象都被保存 由客户端对象。 客户端决定执行哪些命令 哪个点。要执行命令,它会将命令对象传递给 调用者对象。
客户不知道调用者或命令的内部工作原理。这就是好事。客户可以将它们视为原子&#39;他们可以随时启动的事件(通过将命令传递给接收者)。
所以,例如,如果我有一个视频游戏,我可以有一本魔法书(接收器),一些卷轴(命令),将有一个英雄/女主角(将成为(客户端))和魔法imp(调用者) )获取滚动的内容(命令)并知道如何将其转换为书籍(接收者)的输入&#39;(参数)
(旁白:我刚刚做了那个比较,但我更喜欢它......可能会更多地使用它)
这就是为什么链接说&#39;接收器&#39;可以在不影响客户端代码的情况下更改方法。因为客户端不知道命令和接收器的细节。 (也不是调用者)。它只有一组命令&#39;它可以分配给接收方法如何选择。无需了解任何其他3个类别的内部构成。