2011-07-19 5 views
4

私はすでに答えられているものを求めているが、参照が見つからない場合は申し訳ありません。私の質問は、どの層がそれが属しているコンパレータを置くために最適な場所です。例えば、私はユーザオブジェクトのリストを必要とするユーザーの生年月日と姓とその後の名前でソートされています。それはほとんどのコンパレータを置くのに最適な場所

:-)必要とされる。これは、依存それを置く:

答えて

3

ドメインクラスに配置し、フェッチする際にdaoでソートすると、dao oneの2つのメソッド(またはComaprisionタイプに基づく)があり、並べ替えられていないオブジェクトのリストを取得できます。 getUsers()およびソートされたリストのメソッド(getSortedUers(); ofcourseではソートされたメソッドしか持てませんが、並べ替えが必要な場合は常にソートを呼び出すことがオーバーヘッドです。

0

データベースを使用している場合は、その最良の方法は次のようになりorder by

+0

質問には「データベース」ではなく「java」というタグが付けられています。 –

0

一般的な答えを使用して、クエリ自体でそれをソートすることですあなたの実際のデザインとアーキテクチャに多くの。一般的には、ユーザオブジェクトの横に置くか、またはそれを最も多く使う(または排他的に)層に入れることができます。

3

コンパレータがオブジェクトの本来的なものであれば(例えば、それが意味を成す唯一の方法です)、オブジェクトにComparableを実装するだけです。

コンパレータが多くのインスタンス(たとえばComparatorインスタンス)の1つで、特定のコンテキストでのみ意味がある場合は、そのレイヤにコンパレータクラスを配置します。

+0

オブジェクトをいろいろな方法で比較できる場合は、単にComparableインターフェイスを実装することをお勧めしません。そうすることで、オブジェクトを1と比較する方法を制限することができます。Personクラスを取得します。 Personオブジェクトを生年月日や高さで並べ替えることはできますか? – user4205580

0

ええ、あなたはデータベースやいくつかの外部サービスを使用して、それを並べ替えることが可能ですが、それは最善の方法です。しかし、アプリケーション内のオブジェクトをソートする必要がある場合は、アーキテクチャによって異なります。 2つの変種があります。一度ソートする必要がある場合 - 匿名クラスを作成すると、このオブジェクトの参照は保存されません。ソートを何度も行う必要がある場合は、クラスの静的フィールドまたは非静的フィールドとして格納することができます。

+0

ありがとうございます。 –

関連する問題