Java 命令模式:命令如何允许扩展?

Java 命令模式:命令如何允许扩展?,java,c#,design-patterns,command-pattern,Java,C#,Design Patterns,Command Pattern,我在这个链接中阅读了命令模式 它说的是命令模式 命令模式很容易扩展,我们可以在接收器中添加新的操作方法,并在不更改客户端代码的情况下创建新的命令实现 如果我们添加新命令,客户端代码将如何改变。假设在上面的代码示例中,我想添加DeleteCommand。客户端程序main必须正确更改,我的意思是他需要在客户端代码中插入代码 这个词的确切意思是什么?这是否意味着我们不需要更改现有代码,但可以添加新代码。这就是命令模式可扩展的含义吗 我认为这一段更好地解释了这个模式。而不是整篇文章 基本原理/用途:

我在这个链接中阅读了命令模式

它说的是命令模式

命令模式很容易扩展,我们可以在接收器中添加新的操作方法,并在不更改客户端代码的情况下创建新的命令实现

如果我们添加新命令,客户端代码将如何改变。假设在上面的代码示例中,我想添加DeleteCommand。客户端程序main必须正确更改,我的意思是他需要在客户端代码中插入代码

这个词的确切意思是什么?这是否意味着我们不需要更改现有代码,但可以添加新代码。这就是命令模式可扩展的含义吗

我认为这一段更好地解释了这个模式。而不是整篇文章

基本原理/用途:

使用命令对象可以更容易地构造常规构件 需要在调用时委托、排序或执行方法调用 他们的选择不需要知道方法的类别或 方法参数

设计:

始终与命令模式相关的四个术语是命令, 接收方、调用方和客户端。命令对象知道接收者的情况 并调用接收方的方法。参数的值 接收器方法存储在命令中。然后,接收器执行以下操作: 工作调用程序对象知道如何执行命令,并且可以选择 对命令的执行进行簿记。调用程序不支持 知道任何具体的命令,它只知道命令 接口。一个调用程序对象和几个命令对象都被保存 通过客户端对象。客户机决定在执行时执行哪些命令 哪些点。要执行命令,它将命令对象传递给 调用程序对象

客户端不知道调用程序或命令的内部工作。这就是它的好处所在。客户机可以将它们视为“原子”事件,它们可以随时启动(通过将命令传递给接收方)

例如,如果我有一个电子游戏,我可以有一本魔法书(接收器),一些卷轴(命令),会有一个英雄/女英雄(客户端),还有一个魔法小精灵(调用器),它接收卷轴的内容(命令),并知道如何将其转换为书(接收器)的“输入”(参数)


(旁白:我只是做了一个比较,但我更喜欢它……可能会用得更多)



这就是为什么链接说可以在不影响客户端代码的情况下更改“接收方”方法的原因。因为客户机既不知道命令的细节,也不知道接收者的细节。(也不是调用方的)。它只有一组“命令”,可以根据自己的选择将其分配给接收方方法。不必知道任何其他3个类的内部构成

您必须为新的命令行为编写接口的新实现,但是任何处理接口的客户机都不需要知道有关如何实现命令的详细信息。什么这么难理解?如果是JAVA教程,为什么还要将其标记为C?问题:客户机代码是否更改?是的,任何处理接口的客户机都不需要更改。但在本例中,客户机创建接收器并设置命令。因此,当我们添加新命令时,请说“DeleteCommand”客户需要通过添加新代码来更改其代码。那么作者所说的“不更改客户代码”是什么意思呢?我在C#bcoz中添加了这一点,我希望通过编程极客语言来了解这一点,因为这是设计逻辑的范例。