私はいくつかの異なる方法で並べ替える必要があるクラスを持っています。その多くはequals()
契約を破っています。そのため、異なるComparator
クラスを持つ必要があります。私が持っている質問は、それらのクラスがどこに住んでいるかです。Comparatorはドメイン駆動型のMVC世界ではどこに住んでいますか?
例の名前空間の構造として使用すると、構造ではなく、ファイル構造をパッケージ化する質問を制限するために、具体的な何かがあるように、次の名前空間を想定することができます:クラスはdomain
名前空間に住んで
app
domain
exception
hibernatemapping
mvc
propertyeditor
tags
persistence
hibernate
ドメイン、および関連する例外および休止状態マッピングファイルはそれぞれexception
およびhibernatemapping
にあります。 persistence
には、DAOインターフェイスが保持され、休止状態の実装はhibernate
になります。すべてのMVCコントローラはmvc
にあり、特殊なプロパティエディタ(これはSpring MVC)がpropertyeditor
に、カスタムクラスのバッククラスがtags
になっています。
Comparators
は、domain
名前空間(おそらくdomain.comparator
)の下に住んでいるはずですが、わかりません。
あなたはどこにそれらを置くのですか?
アップデート:一般的なUtil
パッケージを使用している人がたくさんあります。そのルートに行くときは、UIヘルパーとドメインヘルパーによるクラスUtil
を除外しますか?たとえば、ドメインがビジネスロジック上の理由でソートする必要があるが、UIでドメインが気にしない追加のソートが必要だった場合、基本的には、レイヤごとにヘルパーパッケージを持つ傾向がありますか?私は通常、次のような構造で行く
+1機能別パッケージです。いくつかのプロジェクトでは、バニラドメイン/ dao/service/controllerの式が理にかなっています。 – Kevin
それで、パッケージバイフィーチャの世界では、コンパレータは物が比較されるのと同じパッケージに入っていますか?例えば。 'Foo'コンパレータは' app.foo'パッケージに入っていますか? – cdeszaq
をパッケージごとにフィーチャーする場合は、そのフィーチャーを構成するモデル、DAO、サービス、およびその他のクラスを持つapp.myfeatureを使用します。おそらくコントローラはまだいくつかの他のパッケージに存在し、サービス層としか話していないでしょう。 – Kevin