7

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

4

1 回答 1

4

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

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

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

基于REST的API 是流行的,并且作为 API 将比任何本地语言特定机制(如 RMI)持续更长时间。

于 2011-02-16T18:06:00.600 回答