Design patterns 命令模式是单个实例的命令模式
命令模式的定义是否说明命令是否应该可重用。我的意思是,您应该在每次调用execute方法时创建一个新实例,还是可以创建一个命令实例并使用不同的参数多次调用execute 在.net平台上,我可以看到WPF中的命令只创建了一次,尽管这不是答案 也许从另一个角度来看,这是一个不允许保存状态的命令,比如ddd服务,如果是这样的话,使用一个实例就可以了Design patterns 命令模式是单个实例的命令模式,design-patterns,command-pattern,Design Patterns,Command Pattern,命令模式的定义是否说明命令是否应该可重用。我的意思是,您应该在每次调用execute方法时创建一个新实例,还是可以创建一个命令实例并使用不同的参数多次调用execute 在.net平台上,我可以看到WPF中的命令只创建了一次,尽管这不是答案 也许从另一个角度来看,这是一个不允许保存状态的命令,比如ddd服务,如果是这样的话,使用一个实例就可以了 如果这不是模式定义的一部分,是否存在任何“最佳实践”?GoF模式中的命令对象肯定是可重用的。最常见的重用情况是在支持撤消操作的命令中。调用程序可以调用e
如果这不是模式定义的一部分,是否存在任何“最佳实践”?GoF模式中的命令对象肯定是可重用的。最常见的重用情况是在支持撤消操作的命令中。调用程序可以调用
execute()
执行操作,然后调用undo()
回滚该操作。调用程序可以任意执行()和撤消()无数次
调用程序不知道命令如何执行,包括执行(或撤消)所需的任何参数,这对于模式来说是至关重要的。参数必须封装在命令对象中,这意味着它们可以在命令实例化时传递,但不能在执行时传递
显然,调用程序永远不会实例化命令本身,因为关键是通过提供一个只起作用的黑盒,将调用程序与执行细节分离。有关该主题的更多信息,请参见:
是否每次要调用execute方法时都要创建一个新实例
不,只有在希望使用不同参数调用execute()
方法时,才应该创建新实例。命令将这些参数作为其状态保存,以便调用程序不必知道它们
把它想象成点击一个按钮。您不必向按钮传递参数。该按钮执行的操作可能在UI后面有参数,但您不需要传递任何信息来单击该按钮。你是调用者。按钮是命令。创建按钮并通过某些操作对其进行参数化的UI是客户端。客户机通过命令界面将调用程序与操作分离。对此进行了更多搜索。我想这就是答案。它归结为我希望命令具有的范围。在我的例子中,我有3个作用域:单例、瞬态和作用域。所有这些都是有效的,可以工作。如何做出最佳选择?这是我下一个要弄清楚的任务。不幸的是,该线程中的答案是错误的,这并不是说你不应该使用它;但这不是GoF命令模式。我提出了一个副本,在那里我解释了这一点,现在在答案本身添加了一条评论。