По моему мнению, вся идея корней совокупности имеет смысл только тогда, когда для данного агрегата существует единый корень. Какой из них - зависит от ваших требований. Давайте рассмотрим две возможности:
Книга является корнем и содержит главы, содержащие страницы. Этот дизайн полезен, когда все ваши сценарии использования включают взаимодействие с книгами: пользователи выбирают книги и применяют свои операции / команды ко всем книгам. Обратите внимание, что агрегат Book находится на уровне «операций» модели вашего домена - в целом он представляет понятия, которые являются частью повседневного бизнеса.
Глава это корень. Содержит Страницы. Это также имеет ссылку на книгу. Этот дизайн полезен, когда сценарии использования сосредоточены на взаимодействии с отдельными главами. Агрегат глав теперь находится в слое «операций». Книга сама по себе формирует совокупность, но находится под слоем «потенциал / возможности» под слоем операций. Это означает, что книги являются активом организации, инструментом для бизнеса, но не являются частью повседневной деятельности. Более того, книги ничего не знают о ссылках на главы.
Подводя итог, все зависит от специфики вашего дела, ваших требований. Имейте в виду, что слои в модели предметной области являются, в первую очередь, бизнес-концепцией, а не технической - они помогают вам правильно моделировать домен. Для получения дополнительной информации, пожалуйста, прочитайте Эрик Эванс «Доменно-управляемый дизайн, особенно раздел« Крупномасштабная структура ».
»