Я думаю о моделировании агрегатов, инвариантов, данных и т. д. Существует общий совет проектировать агрегаты небольшими. У меня проблема с правильным разбиением домена и простым CRUD. Предположим, что у нас есть приложение, в котором мы умеем создавать проект и присоединять к нему соавторов. Есть много информации, связанной с проектом на этапе создания (название, описание, проект_цели, примечания, дата создания, дата изменения, соавторы). Как исправить совокупность дизайна, где есть правило, проверяющее, что мы можем добавить только 5 соавторов. Принимая во внимание, что имя полей, описание, проект_цели, примечания на самом деле не участвуют ни в одном бизнес-правиле, и есть только требования, чтобы эти поля не были пустыми (это действительно инварианты?), должны ли эти поля действительно быть частью агрегат?
Разве наш настоящий Домен (агрегаты, сущности, объекты-значения, политики) не должен содержать только данные, которые участвуют в защите инвариантов или помогают принимать бизнес-решения? Если да, то как (создать) описанный выше проект? Должен ли класс со всеми этими несущественными (с точки зрения бизнеса) полями быть реализован как анемичная модель за пределами домена, а корень агрегата должен просто иметь метод addCollaborator, который защищает количество соавторов? Это хорошая идея, чтобы сохранить анемичный объект класса с помощью Dao (работает с таблицей db) и для доменной реализации агрегата создать репозиторий?
Как добавить первого соавтора при создании проекта, так как в начале мы создаем анемичный объект класса вне домена?
Спасибо за любую помощь и совет Papub