Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 查看不同对象调用命令设计模式时的结果_Design Patterns_Command - Fatal编程技术网

Design patterns 查看不同对象调用命令设计模式时的结果

Design patterns 查看不同对象调用命令设计模式时的结果,design-patterns,command,Design Patterns,Command,比如说我想打开一两扇门。当我打开一扇门时,会发生很多事情。门可能打开90º或130º,或被堵塞,或其他任何情况 另一方面,我可能希望通过GUI甚至通过命令行打开门 因此,当我执行Command openDoor=new openDoor(door)然后执行openDoor.execute()时,我如何知道此操作的结果?如果我只是需要打印到控制台,我可以直接打印出来。如果在整个命令中发生了多个操作,并且我需要在它们发生后立即知道它们的结果,该怎么办 同样,如果是控制台,我可以在它发生时打印出来。但

比如说我想打开一两扇门。当我打开一扇门时,会发生很多事情。门可能打开90º或130º,或被堵塞,或其他任何情况

另一方面,我可能希望通过GUI甚至通过命令行打开门

因此,当我执行
Command openDoor=new openDoor(door)
然后执行
openDoor.execute()
时,我如何知道此操作的结果?如果我只是需要打印到控制台,我可以直接打印出来。如果在整个命令中发生了多个操作,并且我需要在它们发生后立即知道它们的结果,该怎么办


同样,如果是控制台,我可以在它发生时打印出来。但是在GUI上我不能。有没有合适的方法可以做到这一点?

这个问题太宽泛了。openDoor.execute()方法的返回类型是什么?还是导致事件被触发?您使用的是什么UI框架?如果没有这样的细节,这个问题是无法回答的。这是一个广泛的问题,因为它的重点不在于语言。命令设计模式表示execute()方法无效,并且不返回任何内容。假设语言是Java或C#命令模式没有说
execute()
方法必须是
void
。GoF只是显示了一个示例,其中方法恰好是
void
。它将此实现描述为命令接口的“最简单形式”,并且还说,“一个命令可以具有广泛的功能。”Java包括命令接口的两个标准实现:和。