2011-02-16 152 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)都更受歡迎,它的持續時間更長。