0

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

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

4

2 に答える 2

0

ニーズに合った構造のクラスを使用してください。Martin Fowler には、 DataTransferObject (DTO)と呼ばれる同様の手法が 1 つあります。この手法では、複数の呼び出し (おそらくデータベース呼び出し) を使用してデータを取得する代わりにオブジェクト モデルを渡し、コストを削減します。

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

  1. クラス構造には追加のロジックがないため、読みやすくなっています (ロジックが少ない)
  2. コードを読みやすくするために、実際に動作するコードのにおいをするコンストラクターを作成しないでください。
  3. 参照を渡すだけで、まったく新しいオブジェクトを作成しないため、操作は安価です。特にデータ構造が大きい場合。

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

于 2013-11-08T07:12:53.260 に答える
0

それは、パラメーターが何であるか、それらの相互関係、および必須とオプションの数によって異なります。

複数のパラメーターが関連している場合、通常は、それらのパラメーターを格納する別のクラス (または構造体) を作成することをお勧めします。

たとえば、代わりに

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

src ammount と srcCurrency が関連していることがわかります。新しいクラスを作成して、さまざまな金額のお金を処理し (場合によっては、他の通貨に変換するためのメソッドなどを追加することもできます)、パラメーターの数を減らすことができます。

TransferMoney(long srcAccountNumber, Money amount, long destAccountNumber)

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

于 2013-11-07T19:59:28.253 に答える