2012-03-21 11 views
3

は私がドメイン駆動設計にエリックのエバンスを本を読んでいます。モデルの複雑さを軽減するための彼のアドバイスの1つは、アソシエーションにトラバース方向を課すことです。団体横断方向

私は引用:

可能な限りの関係を制約することが重要です。 双方向の関連付けは、両方のオブジェクトが のみ一緒に理解することができることを意味します。ときにアプリケーションの要件は、横断方向は 相互依存を低減し、設計を簡素化追加、両方向にトラバース のために呼び出すことはありません。ドメイン を理解すると、自然な方向性のバイアスが現れることがあります。関連付けのために横断方向を選んだ方法

?一般に、2つの要素の間に関連がある場合、それは2つの方向で読み取られ、理解される。私たちに一方向を選択させる原因は何でしょうか?

おかげ

答えて

4

エンティティAとエンティティBとの間に関連があります、あなたは、多くの場合、自分だけA.Bを使用して、決して見つけることができますB.A. Aは、集約ルートであり、あなたがBを操作どこすでにそのAへの参照を持っているので、常にあなたの出発点であるので、これは私がエヴァンスは、単にあなたが唯一のトラバース方向を追加すべきであることを示唆していると思います

などであってもよく、あなたはそれを必要とし、途中で「私たちは、後でそれを必要とする場合には」横断方向を追加することとは対照的に、直後のコードでそれを使用する時期。

4

概念的には、すべての関連付けは双方向です。それらを実装する際に、あなただけの参加者の一人にリンクを維持する必要があるため、それにもかかわらず、ほとんどが単方向になってしまいます。

デザイン時に、実装レベルで双方向性を破ることができず、システムのコーディングを容易にすることができます。