0

集計に関する章を読んだところ、何か誤解していることに気づきました。Member、Item、Bid の 3 つのオブジェクトがあります。本のコードスニペットは次のとおりです。

public class Member
{
   public string Id {get; set;}
   ...
}

public class Item
{
   public string Id {get; set;}
   public IList<Bid> Bids {get; set;}
   ...
}

public class Bid
{
   public Member Member {get; set;}
   ...
}

Autor は、アイテムなしでは入札は意味をなさないため、アイテムとその入札は 1 つの集合体であると書いています。したがって、Item と Member は集約ルートです。ただ、入札もメンバーなしでは意味がないと思います。そして、それは論理的であるようです。では、この状況での入札とは何ですか? アイテム集約の一部ですか?

4

2 に答える 2

2

まず、集計集計ルート別の概念です。この場合、Item と Bid は同じ集計の一部である可能性がありますが、1 つだけです。Item は集計ルート (AR) であると思います。

どのクラスが AR であるかを定義することは、境界付けられたコンテキスト (BC) に大きく依存します。また、そのメンバー クラスは、その BC で単純な Id としてのみ表現される場合があります。これは、別の BC で使用する可能性のあるメンバーではありません (DDD は非常にトリッキーです)。

Item には Bid と Member の両方が含まれ、すべて一緒になって集合体を形成しますが、Item は集合体のルート、つまり他の人が集合体を管理するために使用するファサード オブジェクトです。

于 2012-11-16T15:13:00.283 に答える
1

まったく同じではありませんが、これはこの SO questionと非常によく似ており、リチャード・シレロールの答えはまともなものです。

しかし、本書の 71 ページを参照してください。この図では、入札にはメンバーへの参照があり、その情報を取得するために OUT に到達できますが、メンバーは IN に到達できないことが示されています。到達する唯一の方法は、アイテムを介することです。したがって、アイテムは例のコントロール ポイントです。これにより、何が何ができるのかを明確かつトランザクション的に保つことができます。

于 2012-11-16T15:03:28.350 に答える