3

ドメイン駆動設計について1日10時間以上学習した後、今日この記事を読むまで、私はそれをかなりよく理解し始めているように感じ始めました。

http://blog.fedecarg.com/2009/03/15/domain-driven-design-the-repository/

その記事の著者は、あなたがリポジトリをドメインオブジェクトに挿入すると言っていますが、それは私には意味がありませんでした。

私はこのテーマの専門家ではありませんが、彼は間違っていると思いますが、リポジトリをドメインオブジェクトに挿入することが正しいか間違っているかについて、ここで何人かの人々から意見を求めたいと思います。

先週の毎日の読書で、別の記事を読んだり、別の記事を読んだりすると、上に投稿した記事を見るまではすべて同じように聞こえました(これは良いことです)。パターンが正しくありません。

あなたはリポジトリを注入することになっていないのですか、それともあなたはリポジトリを注入することになっていないのですか?

4

1 に答える 1

6

示されている例は、ActiveRecordパターンを使用しています。このパターンでは、エンティティは自分自身を保存する方法を知っています。クラスはデータプロパティとそれ自体を永続化する方法の2つのことを知っているため、これは一般に関心の分離としては適切とは見なされません。

Active Recordオブジェクトにリポジトリを注入することは、私が見たいくつかのActive Record実装よりも優れています(少なくともリポジトリ実装を交換できるため)が、私の見解(およびほとんどのDDDコミュニティ)では、依存関係は後方にあります:

リポジトリは、その逆ではなく、返すオブジェクトに依存する必要があります。この理由は、「ドメインオブジェクト」(後で詳しく説明します)は、ロードまたは保存されなくても(つまり、リポジトリに依存していなくても)存在できる(そしてテスト可能である必要がある)ためです。

だからあなたの質問に答えるために、いいえ。ドメインオブジェクトにリポジトリを挿入することは想定されていません。

ただし、これは実際にはドメインオブジェクトではないことに注意してください。これは、動作がなく、単純なget / set(アクセサー/ミューテーター)だけであるためです。これは単なるデータ転送オブジェクト(DTO)です。実際に動作がない場合は、ドメインモデルは必要ありません。単純なCRUDです。

于 2013-01-16T21:01:05.817 に答える