2016-03-23 10 views
1

コマンドパターンを使用してdiffコマンドにカプセル化している機能があります。コマンドパターンの使用方法ランタイムパラメータ

私はそれが私はいくつかは、私は例えば、私のコマンド

を提供する必要がある唯一のランタイムにをparamsは取得していますどのように今までに必要な情報やロジックを使用して、コマンドを作成しています:

おそらく
public class sendMessageToServerCommand implements Command { 

    @Override 
    public void execute(String msg){ 
      sendToServerTheMsg(msg); 
    } 
} 

.. 
Command command=new sendMessageToServerCommand(); 
command.execute("msg I got on runtime"); 

私はコマンドパターンを使うべきではありません。提案?

ありがとうございました。

答えて

3

コマンドパターンでは、作成後に引数なしで実行できるオブジェクト(たとえば、RunnableまたはCallable)が指定されていますが、作成時に引数が渡されることはありません。したがって、​​メソッドからの引数msgをコマンドのコンストラクタに移動するだけで済みます。

コマンドパターンの一般的な使用法では、コマンドは1か所で作成され、別の場所で実行されます。作成ロジックはパラメータ化されています。実行ロジックはそうではありません。

+0

私はこれにSpringを使用しています。私はこれらのコマンドエンティティを高度に作成しています。これらのランタイム・パラメータは、実行時にのみ高度化されています。 – rayman

+0

Springでは、実行時引数を渡すことができます(例:http://stackoverflow.com/questions/22155832/)。 – jaco0646

+0

私はキーオブジェクトストアのマップをアクションキーで持っているので、実行するコマンドはわかります。私は呼び出し元クラスのアクションキーを取得しています。まだ私の方法を理解しようとするすべてのことを接着する – rayman

関連する問題