質問

クラスがコンストラクターにパラメーターが多すぎる場合、構造またはビルダーパターンを使用できます。

どちらが良いですか?良い練習はありますか?

役に立ちましたか?

解決

あなたのニーズを満たす構造を持つクラスを使用してください。 Martin Fowlerには、同様のテクニックが1つあります datAtransferobject(dto), 、複数の呼び出し(おそらくデータベース呼び出し)を使用してデータを取得する代わりにオブジェクトモデルを渡すため、コストが削減されます。

ビルダーパターンに対する利点:

  1. クラス構造には追加のロジックがありません。読みやすいことを意味します(ロジックが少ない)
  2. 作成しないでください 実際の作品をしているコンストラクター コードの臭い、もう一度コードの読み取りが容易になります
  3. 参照を渡すだけで、新しいオブジェクトを作成しないため、操作は安価です。特にデータ構造が大きい場合。

欠点:オブジェクトは可変状態にあります。

他のヒント

それは、パラメーターが何であるか、互いにそれらの関係と、必要な数とオプションに依存します。

いくつかのパラメーターが関連している場合は、通常、これらのパラメーターを保存するために別のクラス(または構造)を作成する方が良いです。

たとえばの代わりに

TransferMoney(long srcAccountNumber, int srcAmount, Currency srcCurrency, long destAccountNumber)

SRC AmmountとSRCCURRENCYが関連していることがわかり、さまざまな金額のお金を処理する新しいクラスを作成し(おそらく他の通貨などに変換する方法を追加して)、パラメーターの数を減らすことができます。

TransferMoney(long srcAccountNumber, Money amount, long destAccountNumber)

この質問は言語不可知論ですが、デフォルト値(Javaなど)をサポートしていない言語がある場合は、可能なすべての組み合わせに適合するために、異なる数とタイプのパラメーターを持ついくつかのオーバーロードされたメソッドが必要になる場合があります。組み合わせがたくさんある場合、ビルダーはよりクリーンな方法です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top