#design-patterns #domain-driven-design #entity #aggregateroot
#шаблоны проектирования #дизайн, управляемый доменом #сущность #aggregateroot
Вопрос:
Я хочу реорганизовать свой проект с помощью DDD. Существует три объекта, такие как банковская карта, канал и пользователь. Существует следующая связь:
- Банковская карта может подписать контракт с multi channel.
- Пользователь может привязывать несколько банковских карт.
- Банковская карта может быть привязана к нескольким пользователям.
Теперь в проекте есть три таблицы, такие как таблица банковских карт, таблица контрактов с банковскими картами и каналами, таблица взаимоотношений с банковскими картами и пользователями. Я хочу спроектировать банковскую карту как объект, пользователя и канал как объект значения (объект пользователя и объект канала должны поддерживаться в другом домене). Итак, как я должен спроектировать совокупный корень. Рассмотрите банковскую карту как совокупность, а список каналов, список пользователей как свойство совокупного корня или создайте банковскую карту, банковскую карту-контракт, банковскую карту-пользователь-отношения как совокупный корень?
Ответ №1:
Если у вас есть только одна сущность (банковская карта) и два объекта-значения, я бы сказал, что звучит естественно моделировать сущность как совокупный корень, а два объекта-значения — как его свойства.
Комментарии:
1. Спасибо за ваш ответ. Мне нужно обрабатывать статус привязки пользователя (например, предварительное связывание, привязка, разделение), а также статус подписи канала. Итак, как отобразить этот статус в совокупном корне?