В качестве упражнения я пытаюсь создать простое приложение для блога в .NET, используя DDD. Пока у меня есть классы User, Topic и Comment. Но проблема в том, как связать комментарий с пользователем и темой? Если я скажу, что Пользователь и Тема являются агрегированными корнями, то при чем тут Комментарий?
DDD — объединение корней в очень простой модели блога
comment
Этот вопрос никогда бы не возник, если бы вы следовали теории DDD. Сначала проведите мозговой штурм и нарисуйте возможные сценарии, затем кодируйте. Например, тему можно рассматривать как первый комментарий в серии из них, поэтому между ними нет большой разницы, за исключением дополнений, которые есть у темы (заголовок, теги и т. д.).
- person yoda   schedule 10.12.2010
comment
Ну, я полный нуб в DDD и архитектуре программного обеспечения в целом. Но из того, что я слышал, следует избегать обобщений, то есть, если пользователи думают, что тема отличается от комментария, я не должен моделировать ее как комментарий. Я пытаюсь провести мозговой штурм своей модели прямо сейчас...
- person Alan Fox   schedule 11.12.2010
Ответы (1)
Агрегаты могут иметь ассоциации с другими корнями агрегатов.
например комментарий может быть связан как с темой, так и с пользователем. В любом случае, я бы смоделировал это так: совокупные корни - это границы согласованности. Тема не обязательно должна каким-либо образом согласовываться с ее комментариями, поэтому комментарии не обязательно должны быть частью этой совокупности. Пользователю не нужно быть последовательным во всех своих комментариях, поэтому пользователям также не нужно знать о комментариях.
Я бы получил комментарии для конкретной темы из репозитория комментариев. например
var comments = commentRepo.FindCommentsForTopic(someTopic);
//or by topic id for pragmatic reasons.
person
Roger Johansson
schedule
12.12.2010