1

複数のコンストラクターの扱い方についてお聞きしたいです。

if(a != null && b != null)
    return new QueryProducer(query, a, b);
else if(a != null)
    return new QueryProducer(query, a);
else if(b != null)
    return new QueryProducer(query, b);
else return new QueryProducer(query);

複雑な if else ブロックは避けたいです。この場合、スケーラビリティもあまり良くありません。

4

3 に答える 3

8

ここでビルダーパターンを使用するのはどうですか?コード例については、Javacodegeeks のこのリンクを参照してください

QueryProducer.withQuery(yourQuery).withA(a).withB(b).build();
于 2013-09-28T11:31:13.637 に答える
0

渡されたパラメーターに基づいて QueryProducer を構築するビルダーを作成します。オブジェクトを作成するためのすべてのロジックを 1 か所に配置できます。もう 1 つ頭に浮かぶのは、3 つのパラメーターすべてをコンストラクターに渡し、そこで処理することですが、例外が発生する可能性があるため、ほとんどの場合、コンストラクターにロジックを入れることは避けています。

于 2013-09-28T11:36:04.547 に答える
0

他の人が答えたように、次のいずれかに該当する状況がある場合は、Builder パターンを使用することを強く検討する必要があります (通常、オブジェクトのクラスの静的なネストされたクラスによって定義されるヘルパー オブジェクトを使用して) を構築します。必要なオブジェクト):

  • コンストラクターに 4 つ以上のパラメーターがありますか?
  • コンストラクターをオーバーロードしていますか?
  • コンストラクターには、オプションのデータを指定するパラメーターがありますか?
  • 将来、コンストラクターにさらにパラメーターを追加する予定はありますか?
  • 不変オブジェクトを構築できる一方で、JavaBean パターンの可読性が必要ですか?
于 2013-09-28T12:00:48.577 に答える