2

私たちの DDD プロジェクトでは、Factory を使用して、最初の集約ルート モデル 'Order' を作成しています。新しい注文の仕入先 'Order.Supplier' が特定の仕入先にデフォルト設定されているというビジネス ルールがあります。データベースからデフォルトのサプライヤーを取得する必要があります。

デフォルト値を取得するために最初の注文を作成するときに、Order ファクトリのサプライヤー リポジトリを呼び出しても問題ありませんか? 工場の目的は、有効な状態でモデルを作成することであることを知っています。有効な新しい状態には、デフォルト値セットが必要です。この場合、リポジトリを呼び出すことができますか、それともデフォルトのサプライヤーをファクトリ コンストラクターに渡す必要がありますか?

4

3 に答える 3

3

Factory OR DomainServiceがリポジトリにアクセスできるという事実に+1 。

しかし

-1 :

これはドメインとはまったく関係がないと思います。私はそれが適用規則だと思います。

私と一緒に考えてみてください。企業がデフォルトのサプライヤーを別のサプライヤーにすると決めたらどうなるでしょうか。それは、あなたのビジネスの変更を必要とする規則ですか? それはあなたの工場に変更を加える必要がありますか? それは大丈夫ですか?

覚えておいてください: ドメインは、「どのようにビジネスを行っているか」ではなく、「どのビジネスに携わっているか」を指します。

これを ApplicationService に配置したいと思います。ドメインは、デフォルトのサプライヤーがあるかどうかを知る必要はありません。どうしても「仕入先」が必要になる場合があります。

Order にはコンストラクターが含まれる場合があります。たとえば、 Order(Supplier supply) - > オーダーにサプライヤーを強制します。

または、ファクトリはそのメソッドで DefaultSupplierId を受け取る場合があります。

しかし、ドメインは決してそれについて知っているべきではありません. 私の意見では、そこには当てはまりません。

ブルーノ

于 2013-05-21T22:16:15.233 に答える