Я борюсь с агрегатами и совокупными корнями. У меня есть естественный совокупный корень, который работает примерно на 60% запросов пользователя. То есть эти запросы естественным образом применяются к совокупному корню.
В моей совокупности у меня есть другой объект, который может существовать только как член совокупного корня. Однако пользователям будет рассказано об этом другом объекте объекта. Понятно, что концептуально, чтобы пользователи могли напрямую работать с этим неагрегатным корневым объектом.
Итак, я думаю, у меня есть несколько вариантов:
- Они могут оба быть совокупными корнями, в зависимости от того, какая операция запрашивается пользователем.
- Все операции должны выполняться через общий агрегатный уровень верхнего уровня.
Обратите внимание, что корневой узел верхнего уровня будет содержать коллекцию этого другого объекта.
Пример:
Основной совокупный корень: автомобиль
Второй объект: сиденье (автомобиль имеет 2 или 4 места в зависимости от типа). В моих доменах места могут существовать только как часть автомобиля.
Большинство операций в домене находятся на уровне Car. Таким образом, это будет хороший кандидат для совокупного корня. Однако (и я изо всех сил пытаюсь привести примеры), некоторые операции будут на уровне места, например. SpillCoffee, ChangeFabric, Clean....
Может ли Seat и Car быть совокупными корнями? Или я должен всегда начинать с автомобиля?
Спасибо