2010-11-29 8 views
1

私はDDDが新しく、プロジェクトに適用できるようにいくつかの概念をクリアする必要があります。いくつかのリポジトリで1つのドメインオブジェクト 'filled'

基本的に、私はドメインオブジェクト "顧客"を持っています。 CustomerRepositoryはDALを参照してこのドメインオブジェクトを返します。

問題は、DALは、お客様のドメインオブジェクトを「埋める」ために必要なすべての情報を提供することができないということです。顧客に関する一部の情報は、他の外部リソース、他のリポジトリまたは外部Webサービスによって取得されます。

多分私は "顧客"ドメインオブジェクトを分割する必要があります。しかし、もし私のビジネスロジックが私にそうすることを許していないなら、どうでしょうか?

また、ドメインオブジェクトを返すのはリポジトリの責任ですか?

答えて

1

はい、リポジトリの責任である必要があります。

今日は安価です。そのデータを2倍にして、あなたの問題を解決できるでしょうか?たとえば、customer.firstnameがデータソース#1から来ていて、customer.lastnameがデータソース#2から来ている場合は、顧客登録customer.lastnameがデータソース#1に保存されていることを確認できます(+顧客)?

もう1つのこと - あなたのドメインモデルはこの問題を知るべきではありません。技術的な問題に気付かないようにしてください。さもなければ、あなたは最終的に孤立を失い、そこにコード化された人工的なドメインオブジェクトを実行させます。

+0

+1。ドメインのCustomerエンティティを妥協しないでください。そうしないと、ドメインモデル全体に​​アーキテクチャ上の汚染が広がります。モデルを正確に保つことは、DDDの核心です。リポジトリは、問題に対処するための自然の家です。両方の保存場所(DAL + Webサービスなど)にアクセスできない理由は何ですか? – sfinnie

+0

@sfinnieがある理由は - それは技術的に難しく、パフォーマンスに重大な影響を与える可能性があります。それ以外は何も間違っていません。 –

+0

私はドメインの残りの部分の視点からドメインエンティティを完成させておくことに投票します。あなたは潜在的にレポのためのいくつかの "遅延ロード"タイプの戦略を見ることができます。しかし、まずは簡単に始めて、実際にパフォーマンスの問題がある場合はそこに行くだけです。 – sfinnie

関連する問題