Command Pattern - return a value
I'm using the command pattern for passing a command from a client to a server via a TCP/IP socket. The server will take the command object, deserialize it and then call execute() on the command object. However, I need to pass a value back开发者_JS百科 to the caller over the socket. Does the command pattern allow for this? If not, is there a work around? I have looked at the light switch example on wikipedia, which is great, but there are no return values. Any advice greatly appreciated.
You should not have an "execute()" method on the Command
sent to the remote server, this is bad in lots of ways, especially in Java. The Command
should represent the action the recipient should take. Which in this case is to call a method on some object.
The Command
Pattern is to represent actions taken or to be taken, not the implementation of those actions. Think more of a set of instructions to be carried out.
What your are describing is basically an over-engineer RPC call mechanism. Don't re-invent this wheel. Looks at existing RPC mechanisms, there are plenty to choose from in the Java world. Then you need to decide if the RPC is synchronous or asynchronous.
A REST based API is what is popular and will last longer as an API than any native language specific mechanism like RMI.
精彩评论