2011-02-16 150 views
7

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

+0

你能解释为什么你需要发回一个值给调用者吗?也许更多的上下文会有所帮助。 – Ocelot20 2011-02-16 16:49:38

+1

我是一个模式的大信徒。但是,它们只能用于他们设计的目的。到目前为止,我对命令模式价值的看法似乎并不符合你所描述的内容。你能否扩展你认为命令模式在你的实现中为你购买的东西以及你为什么使用它? – rfeak 2011-02-16 16:51:33

回答

4

对发送到远程服务器的Command不应该有“execute()”方法,这在很多方面都很糟糕,特别是在Java中。 Command应代表收件人应采取的操作。在这种情况下,在某个对象上调用方法。

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

你所描述的基本上是超工程RPC调用机制。不要重新发明这个轮子。看看现有的RPC机制,在Java世界中有很多选择。然后,您需要确定RPC是同步还是异步。

A REST基于API的API比任何本机语言特定的机制(如RMI)都更受欢迎,它的持续时间更长。