7

TCP/IPソケットを介してクライアントからサーバーにコマンドを渡すためにコマンドパターンを使用しています。サーバーはコマンドオブジェクトを取得し、それを逆シリアル化してから、コマンドオブジェクトに対してexecute()を呼び出します。ただし、ソケットを介して呼び出し元に値を返す必要があります。コマンドパターンはこれを可能にしますか?そうでない場合、回避策はありますか?ウィキペディアの照明スイッチの例を見てきましたが、これはすばらしいですが、戻り値はありません。どんなアドバイスも大歓迎です。

4

1 に答える 1

4

リモートサーバーに送信される「execute()」メソッドは使用しCommandないでください。これは多くの点で、特にJavaでは問題があります。はCommand、受信者が実行する必要のあるアクションを表す必要があります。この場合、これはあるオブジェクトのメソッドを呼び出すことです。

パターンは、Command実行された、または実行されるアクションを表すものであり、それらのアクションの実装ではありません。実行する一連の指示についてもっと考えてください。

あなたが説明しているのは、基本的にはオーバーエンジニアのRPC呼び出しメカニズムです。このホイールを作り直さないでください。既存のRPCメカニズムを見ると、Javaの世界にはたくさんの選択肢があります。次に、RPCが同期か非同期かを判断する必要があります。

RESTベースのAPIは人気があり、RMIのような母国語固有のメカニズムよりもAPIとして長持ちします。

于 2011-02-16T18:06:00.600 に答える