Как спроектировать совокупный корень?

#design-patterns #domain-driven-design #entity #aggregateroot

#шаблоны проектирования #дизайн, управляемый доменом #сущность #aggregateroot

Вопрос:

Я хочу реорганизовать свой проект с помощью DDD. Существует три объекта, такие как банковская карта, канал и пользователь. Существует следующая связь:

  1. Банковская карта может подписать контракт с multi channel.
  2. Пользователь может привязывать несколько банковских карт.
  3. Банковская карта может быть привязана к нескольким пользователям.

Теперь в проекте есть три таблицы, такие как таблица банковских карт, таблица контрактов с банковскими картами и каналами, таблица взаимоотношений с банковскими картами и пользователями. Я хочу спроектировать банковскую карту как объект, пользователя и канал как объект значения (объект пользователя и объект канала должны поддерживаться в другом домене). Итак, как я должен спроектировать совокупный корень. Рассмотрите банковскую карту как совокупность, а список каналов, список пользователей как свойство совокупного корня или создайте банковскую карту, банковскую карту-контракт, банковскую карту-пользователь-отношения как совокупный корень?

Ответ №1:

Если у вас есть только одна сущность (банковская карта) и два объекта-значения, я бы сказал, что звучит естественно моделировать сущность как совокупный корень, а два объекта-значения — как его свойства.

Комментарии:

1. Спасибо за ваш ответ. Мне нужно обрабатывать статус привязки пользователя (например, предварительное связывание, привязка, разделение), а также статус подписи канала. Итак, как отобразить этот статус в совокупном корне?