2017-01-10 5 views
1

Я разрабатываю проект, применяющий принципы DDD, я создал агрегацию классов (Account), в которой будут содержаться классы (Агентство) и (Агент), которые в качестве (Учетной записи) имеют таблицы в базе данных. Мой вопрос в том, что:Агрегаты и DDD

Мне нужно создать класс репозитория и класс службы для каждого из моих сущностей (Учетная запись, Агент и Агентство), или я должен создать AccountRepository и внутри него делать вставки и поиск трех классов ?

ответ

5

Только совокупные корни должны иметь репозитории, но вам нужно придумать правильные агрегаты.

Не зная ничего о вашем домене я чувствую, что Agency и Agent агрегатные корни свои собственные, так что они будут иметь свое хранилище и Account бы ссылаться на них по идентификатору.

Проектирование агрегатов - самая сложная задача моделирования, и целые книги могут быть написаны на эту тему. Я настоятельно рекомендую вам прочитать Effective Aggregate Design от Vaughn Vernon.

+0

Отличный ответ и отличная книга. Всякий раз, когда я общаюсь с кем-нибудь о DDD, я никогда не могу подчеркнуть те же чувства. Многие люди терпели неудачу, рассматривая совокупный дизайн, такой как моделирование данных, т. Е. Одно предварительное усилие, которое создает жесткую модель домена, которую люди не хотят изменять. Весь домен должен расти органично из случаев использования, и люди должны начать с понимания того, что оно/будет/изменено как часть текущего процесса обнаружения. –

+0

Спасибо за ответ. Я собираюсь прочитать эту книгу, я думаю, что очень важно иметь четкое представление об этих концепциях – Dariel