TCP/IPソケットを介してクライアントからサーバーにコマンドを渡すためにコマンドパターンを使用しています。サーバーはコマンドオブジェクトを取得し、それを逆シリアル化してから、コマンドオブジェクトに対してexecute()を呼び出します。ただし、ソケットを介して呼び出し元に値を返す必要があります。コマンドパターンはこれを可能にしますか?そうでない場合、回避策はありますか?ウィキペディアの照明スイッチの例を見てきましたが、これはすばらしいですが、戻り値はありません。どんなアドバイスも大歓迎です。
4013 次
1 に答える
4
リモートサーバーに送信される「execute()」メソッドは使用しCommand
ないでください。これは多くの点で、特にJavaでは問題があります。はCommand
、受信者が実行する必要のあるアクションを表す必要があります。この場合、これはあるオブジェクトのメソッドを呼び出すことです。
パターンは、Command
実行された、または実行されるアクションを表すものであり、それらのアクションの実装ではありません。実行する一連の指示についてもっと考えてください。
あなたが説明しているのは、基本的にはオーバーエンジニアのRPC呼び出しメカニズムです。このホイールを作り直さないでください。既存のRPCメカニズムを見ると、Javaの世界にはたくさんの選択肢があります。次に、RPCが同期か非同期かを判断する必要があります。
RESTベースのAPIは人気があり、RMIのような母国語固有のメカニズムよりもAPIとして長持ちします。
于 2011-02-16T18:06:00.600 に答える