Я думаю, что ваш вопрос больше касается границ ваших агрегатов.
В любом случае между агрегатами НЕ должно быть иерархической структуры. Агрегаты должны быть независимы друг от друга. Нет отношений родитель-ребенок.
По вашему описанию. Существует User Aggregate, который может создавать магазины и добавлять в него товары.
Store может быть отдельным агрегатом, который инициируется агрегатом User. Обратите внимание, что тот факт, что пользователь может создать Store, не означает, что у него должны быть отношения родитель/потомок. Это больше касается контроля доступа. Магазин создается пользователем, и только этот пользователь имеет право добавлять в него товары.
Однако Продукт кажется сущностью внутри агрегата Магазина.
Ваш четвертый пример «Корзина — пользователь может добавить любой товар из магазинов других пользователей в корзину» показывает нечто совершенно иное. У вас есть два типа пользователей. Пользователи, которые создают магазины и управляют ими, а также потребители данного магазина. Они не одинаковы, и они должны быть смоделированы по-разному.
Попробуйте смоделировать предметную область вашего бизнеса, не пытаясь повторно использовать объекты только потому, что они похожи.
person
Renato
schedule
06.12.2015