命令模式 - 返回一个值

Joe*_*dev 7 java command-pattern

我正在使用命令模式通过TCP/IP套接字将命令从客户端传递到服务器.服务器将获取命令对象,对其进行反序列化,然后在命令对象上调用execute().但是,我需要通过套接字将值传递回调用方.命令模式是否允许这样做?如果没有,是否有解决方法?我查看了维基百科上的灯光开关示例,这很棒,但没有返回值.任何建议都非常感谢.

小智 4

您不应该在发送到远程服务器时使用“execute()”方法Command,这在很多方面都是不好的,尤其是在 Java 中。这Command代表接收者应采取的行动。在本例中是调用某个对象的方法。

模式Command代表已采取或将采取的行动,而不是这些行动的实施。更多地考虑一组要执行的指令。

您所描述的基本上是一种过度设计的 RPC 调用机制。不要重新发明这个轮子。看看现有的 RPC 机制,Java 世界中有很多可供选择的机制。然后您需要决定 RPC 是同步还是异步。

基于REST的API很流行,并且作为 API 比任何本机语言特定机制(如 RMI)的寿命更长。