0

非常に単純な設計上の質問に思えますが、ご意見をお聞かせください。

DAOレイヤーがあり、1つのメソッドが何かの最大値と最小値の両方を返します。したがって、2 つの整数値を返しますがint[]、2 つの要素int[0]=min_valを持つ戻り値の型として使用しint[1]=max_val、メソッドの呼び出し元にとってはあまり明確ではありません。なぜなら、どの要素が最初でどちらが 2 番目であるかを正確に知る必要があるからです。

ここで、このようなある種の DTO を使用する必要があります...

class RangeValuesDTO {
  private int min_val;

  private int max_val;
}

?

そのような単純な状況で正しいパターンは何ですか?

4

2 に答える 2

2

特定のパターンが必要な理由を自問する必要があります。エンタープライズ パターンに関しては、ベスト プラクティスなどというものはありません。@TechExchangeが示唆するように、インターフェイスをタイトで安定した状態に保つために、データベースからオブジェクトにデータ構造をラップすることは、有効な懸念事項です。しかし、@Tom Anderson が指摘するように、これは DTO ではなく値オブジェクトと呼ばれるべきです。

また、主に EJB-3 以前の世界では、DTO パターンの必要性にはいくつかの歴史的な理由があることに注意してください (こちらを参照)。それらはもはや当てはまらないかもしれません。

DTO は、データ層に直接アクセスすることから上位層を分離するのに役立ちます。ただし、単純な CRUD アプリケーションでは、これにより間接性が過剰になり、不要な重複と複雑さが増し、メンテナンスが増える可能性があります。多くの場合、データ アクセス レイヤーを離れないエンティティに非常によく似た DTO が作成されます。

DTO は、より粗粒度のインターフェイスにつながり、ネットワーク トラフィックを削減する分散システムで特に役立ちます。

于 2013-01-30T20:40:08.120 に答える
1

まさに、意味のある再利用可能な DataStructures で常にデータをラップする必要があります。

DTO を使用すると、それを達成するのに役立ちます。

たとえば、将来、DAO が別のものを返した場合、intまたはstring何をするか、DTO を使用する場合、ソリューションはそれintまたはstringDTO に簡単に追加でき、アプリケーションの他のレイヤーには影響しません。

だから+1 DTO

于 2013-01-30T09:45:02.860 に答える