0

以下のコードをリファクタリングする予定です

1.Class A_Builder to build A_Model

Class A_Builder{
public A_Model build(arg1){
//build A_Model
}
}


2.Class B_Builder to build B_Model

Class B_Builder{
public B_Model build(arg2,arg3){
//build B_Model
}
}

3.Class C_Builder to build C_Model
Class C_Builder{
public C_Model build(arg4){
//build C_Model
}
}

4.Class D_Builder...

モデルをビルドするビルダーは1つなので、コマンドパターンを使ってリファクタリングし、ビルドメソッドをコマンドにする予定ですが、Aが(arg1)、Bが(arg2,arg3)のように異なる変数番号をどう扱うか

または、これらのようにコードをリファクタリングするアイデアはありますか?事前に感謝します。

4

1 に答える 1

0

使用している言語を指定していませんが、私が遭遇したほとんどの言語は、関数のオーバーロードをサポートしています。

つまり、同じ名前で2つの別々の関数を宣言できますが、引数は異なります。そうすると、関数呼び出しを行って適切な関数を実行するときに、渡されたパラメーターが言語によって調べられます。

class Builder {
    public build( arg ) {
        // Build A Model
    }

    public build( arg, arg ) {
        // Build B Model
    }

    ...
}

または、関数の引数がすべて同じ変数型である場合は、パラメーターの配列を受け入れる単一の関数を作成するだけで済みます。配列の長さは可変である可能性があるため、配列の長さに応じて、単一の関数でさまざまなアクションを実行できます。

class Builder {
    public build( arg[] ) {
        switch( arg.length ) {
            case 1:
                // Build A Model
                break;
            case 2:
                // Build B Model
                break;
            ...
        }
    }
}
于 2012-05-30T16:27:01.453 に答える