Работа с агрегатами в DDD - PullRequest
       29

Работа с агрегатами в DDD

1 голос
/ 13 октября 2010

Требуются пояснения по работе с агрегатными корнями.

Если у меня есть модель (вопросник) следующим образом:

ВОПРОСНЫЙ БУМАГА ---> ВОПРОС ---> ОТВЕТ

и я определил, что ВОПРОСНАЯ БУМАГА является агрегированным корнем, если я хочу выбрать ответ на вопрос, должен ли я поместить открытый метод в агрегированный корень или я могу выставить вопросы из корня и поставить открытый метод объекта QUESTION для выбора ОТВЕТА ??

1 Ответ

2 голосов
/ 17 октября 2010

В общем, вы всегда хотите общаться с вашим общим корнем. Если вы читаете значения, то иногда может быть удобно добавлять общедоступные методы доступа к агрегатам внутри корня агрегата, но это становится уродливым (закон Деметры, ломать абстракции и т. Д.) Очень быстро, и я бы посоветовал вам этого не делать сделай это.

Однако для всего, что меняет состояние, очень важно, чтобы вы всегда проходили через объединенный корень. Совокупный корень представляет границу согласованности (т. Е. Он отвечает, прямо или косвенно, за поддержание состояния в допустимом состоянии), и, если вы разрешаете изменения состояния, вы вообще это обходите, открывая дверь для все возрастающей сложности.

Итак, все зависит от того, что вы подразумеваете под «выбором» в своем вопросе - если вы запрашиваете, то можете сойти с рук, но это плохая идея. Если вы меняете состояние, не делайте этого, иначе ваш сводный корень больше не является сводным корнем.

...