2010-11-19 18 views
1

さまざまなコマンドをビルドし、別のプログラムに引数として渡す必要があります。この問題の最適なデザインパターン

コマンドはいくつかの情報と形式を共有しますが、引数の数は異なります。

例えば、CRUD操作のために、私は次のコマンド文字列生成される可能性があります:

"create""host_ip""database""user_id""profile""personal_data1""personal_data2""personal_datan" 
"retrive""host_ip""database""user_id" 
"update""host_ip""database""user_id""personal_data1""personal_data2""personal_datan" 
"delete""host_ip""database""user_id" 

は、私はこの素晴らしいサイト上でそれを共有することによって、この&を行うには、よりスマートな方法があると信じて、私はより良いを行う可能性がありますジョブ。

+1

以前の質問に関連する:http://stackoverflow.com/questions/4221444/passing-arguments-form-java-program-to-bash-script-that-c​​all-another-java-program –

+2

あなたはフレームワークのタイプ? Spring FrameworkのJDBCサポートをチェックしてください:http://static.springsource.org/spring/docs/current/spring-framework-reference/html/jdbc.html – Griff

答えて

5
たぶん、あまりにも明白

ていますが、オブジェクト指向プログラミングでCommand Pattern?

と考えている、 指令パターンは、オブジェクトが を表し、すべての情報をカプセル化するために使用される におけるデザインパターンです 後で 時にメソッドを呼び出す必要がありました。この情報には、 メソッド名、 メソッドを所有するオブジェクト、およびメソッド パラメータの値が含まれます。コマンドパターン には、常に という3つの用語が関連付けられています。クライアント、呼び出し元、受信者です。 クライアントはコマンドオブジェクト をインスタンス化し、後でメソッドを呼び出すために必要な情報を で提供します。 呼び出し側は、メソッド を呼び出すタイミングを決定します。受信者は、メソッドのコード を含むクラスの インスタンスです。コマンド オブジェクトを使用すると、それが簡単に デリゲート、シーケンスに必要 一般的なコンポーネントを構築またはそれらの メソッドまたはメソッドパラメータの所有者を知らなくても を選ぶ時に呼び出す メソッドを実行することができます。

1

アプリケーションコマンドをビルドできるビルダークラスが必要なようです。すべてのビルド・メソッド間で使用されるオブジェクトがある場合は、ビルダー・コンストラクタを使用してそのオブジェクトを送信します。

public class CommandBuilder() { 

    public String buildCreate(..) {..} 

    public String buildRetrieve(..) {..} 

    public String buildUpdate(..) {..} 

    public String buildDelete(..) 
} 

あなたはより多くの抽象化を作成したい場合は、常に単純に実行する方法を知っているオブジェクトを返すことができますが、必要に応じてコマンドを語りました。

関連する問題