Агрегированный объект в DDD - PullRequest
5 голосов
/ 16 февраля 2012

Я создал агрегатный класс с именем Question.Содержит ссылки на Answer, Category, Feedback объекты.Должен ли QuestionRepository быть классом, который содержит все методы, запрашивающие базу данных, относящуюся к Вопросу, но также все методы для запроса обратной связи, ответа и т. Д.?Или это должны быть отдельные классы, такие как QuestionRepository, FeedbackRepository и т. Д.

Ответы [ 2 ]

2 голосов
/ 16 февраля 2012

Исходя из того, как вы объяснили, я предполагаю, что на каждый Вопрос будет иметь 1 или более Ответов, 1 или более Отзывов, и Вопрос относится к определенной Категории

Поскольку ответ и обратная связь зависят от вопроса и не могут существовать независимо, у вас может быть один репозиторий вопросов для этих 3 сущностей.

Что касается категории, то категория - это скорее статический объект, а IMO - статический список, поэтому все такие статические объекты можно сгруппировать в StaticRepository

1 голос
/ 16 февраля 2012

с веб-сайта DDD :

Для каждого типа объекта, которому требуется глобальный доступ, создайте объект что может создать иллюзию коллекции в памяти всех объекты этого типа.

Репозиторий используется, когда вам нужен прямой доступ к сущности, т. Е. Когда нет другого удобного способа получить эту сущность, кроме как получить ее напрямую из постоянного хранилища. Напротив, если вы считаете, что сущность в большинстве случаев легко доступна через обход другого объекта, который у вас уже есть, тогда нет необходимости в хранилище. Похоже, что здесь есть ответ, категория и обратная связь.

Обычно репозитории предназначены только для совокупных корней, хотя могут быть и исключения.

Я предлагаю вам прочитать синюю книгу DDD или какой-нибудь учебник, чтобы получить базовое представление о строительных блоках DDD, прежде чем приступить к созданию модели вашего домена.

...