Позволяет сказать, что у меня есть совокупность корень имя User
пользователь может иметь несколько Vehicle
, то Vehicle
компания имеет типы, такие как (suv
, truck
, sedan
, и т.д ...) ,DDD дизайн агрегатных корней для отношения, которые имеют внутренние типы
В том случае, если я хочу, чтобы получить User
автомобили типа sedan
делать только я должен разработать свой агрегат, чтобы получить sedans
непосредственно из агрегата, как User->getSedans()
?
Или я могу получить, что выбрасывает UserRepository->getVehiclesOfTypeSedan()
, и агрегаты удерживают только Vehicles
?
Первый вопрос, который вы должны задать, - это то, почему ваш агрегат 'User' имеет коллекцию транспортных средств. Какие инварианты вы пытаетесь обеспечить с помощью большого кластера 'User'? Вы можете сказать уникальность, но мы можем оставить это ограничение для базы данных, поэтому он не является инвариантом, который оправдывает проведение коллекции. Вы должны серьезно подумать о наличии «владельца» на «машине», который просто ссылается на 'id'' User'. Затем, получение транспортных средств будет выглядеть как «vehicleuleRepository.ofOwnerAndType (ownerId, vehicleuleType.Sedan)». – plalx
Кроме того, в зависимости от вашего домена вы можете захотеть переименовать имя совокупного корня 'Пользователь'. В большинстве доменов обычно используются более подходящие имена (например, «Клиент»). – plalx