7

最初に子エンティティを作成してから集約ルートに渡して追加する方法と、集約ルートでそれらを作成する方法のどちらが優れていますか? 例えば:

Order.AddOrderLine(new OrderLine(product, quantity, ...));

または

Order.AddOrderLine(product, quanity, ...);

どちらがより良いアプローチですか? これは純粋に主観的なものだと思いますが、どちらがより多くの長所と短所があるかを確認したいと思います.

4

1 に答える 1

4

わかりましたので、基本的に私の意見では、 の前にオブジェクトを作成する必要があります。理由は次のとおりです。

  • オブジェクトの作成自体は別の問題であり、かなり複雑になる可能性があります。たとえば、コンストラクターがOrderLine後で変更される場合は、Order型も変更する必要があります。Orderにいくつかの変更があるため、 のみを変更する必要があるため、これは悪いことですOrderLine。したがって、Orderルートのインターフェースは に依存すべきではありませんOrderLine

  • メソッドに呼び出しのみを除く追加のロジックが含まれている場合、2番目のアプローチはテストが難しい場合がありますthis.OrderLines.Add(orderLine);

編集 これについて私の友人と話し合った後、私は次の意見を思いつきました:

  • Order Root は、この API を使用する他の人にとってより明確になり、不適切な使用の可能性を最小限に抑えるため、子の有効期間を制御する必要があります。また、意図がより明確になります。

  • また、このアプローチを使用すると、受信する OrderLine の検証について心配する必要がなくなります。なぜなら、OrderLine の作成を担当している場合は、適切に作成できるからです。

于 2011-01-24T21:16:06.607 に答える