我正在使用命令模式通过TCP / IP套接字将命令从客户端传递到服务器。服务器将获取命令对象,对其进行反序列化,然后在命令对象上调用execute()。但是,我需要通过套接字将值传递回调用方。命令模式是否允许这样做?如果没有,是否有解决方法?我查看了维基百科上的灯光开关示例,这很棒,但没有返回值。 任何建议都非常感谢。
答案 0 :(得分:4)
您不应该在发送到远程服务器的Command
上使用“execute()”方法,这在许多方面都很糟糕,特别是在Java中。 Command
应代表收件人应采取的操作。在这种情况下,在某个对象上调用方法。
Command
模式是表示已采取或将采取的行动,而不是这些行动的实施。更多地考虑要执行的一系列指令。
您所描述的基本上是一种过度工程的RPC调用机制。不要重新发明这个轮子。查看现有的RPC机制,Java世界中有很多可供选择的机制。然后,您需要确定RPC是同步还是异步。
基于REST的API是流行的,并且作为API的持续时间比RMI等任何本地语言特定机制都要长。