В genral e-commerse applications определяют «Продукт» как объект объекта/значения, основанный на его контексте. Вот мой проблемный контекст, мое приложение является заказным порталом для телекоммуникационных сервисов, который предлагает Voice, TV, Internet. Каждая функция/услуга определяется как продукт в каталоге. Например, скорость, маршрутизаторы, голосовые планы, параметры списка каталогов, видеопакеты, каналы, сетчатая коробка, плата за установку, параметры доставки и т. Д. Все это определяется как продукты с точки зрения каталога. Но все имеет свою природу и поведение. Эти поведения отображаются через атрибуты продукта. Например, чтобы проверить, поддерживает ли выбранный маршрутизатор заданную скорость, продукт маршрутизатора может иметь индикаторы, такие как «совместимые скорости» в своем поле «Ключевые слова». Аналогично, каналы, варианты доставки и т. Д. Будут иметь свое поведение как ключевые слова на уровне продукта. Некоторые из них обрабатываются в коде. При проектировании, если «Продукт» рассматривается как модель genralized domain, нецелесообразно определять все разные поведения в одном объекте. Если я создам разные объекты, такие как Speed, Channel, Router, DeliveryMethod и т. Д., У меня будет много моделей. Более того, у меня есть правила из каталога, которые скажут, какие продукты могут собираться вместе, а какие нет, которые должны быть автоматически добавлены на основе другого продукта и т. Д. Все эти правила определяются идентификаторами продуктов. Учитывайте все это, как должна быть разработана модель продукта?Является «продуктом» объекта домена в DDD
ответ
Эти модели поведения подвергаются через атрибуты продукта ...
Те не походят поведения. Это звучит как свойства, которые другие сущности используют в своем поведении.
Например:
У меня есть правила из каталога, который будет сказать, какие продукты могут идти вместе, что не может, который должен быть автоматически добавлены на основе другого продукта
Правила - бизнес-инвариант - это сердце агрегатов в модели домена. Поэтому, когда вы говорите, что у вас есть эти правила; какой объект в вашей модели отвечает за соблюдение этих правил? Какой объект в вашей модели изменяется, когда правила выполняются?
Это интересный бит. У вас есть какая-то модель (договор купли-продажи?), В которой есть продукты, добавленные к ней, и когда эти продукты добавляются, необходимо проверить, чтобы все ограничения были удовлетворены. Проверка противопоказаний - это, как правило, запрос, и обычным способом запуска запроса при изменении агрегата является передача в службе домена, которая знает, как - например, - ходить по графику зависимости продукта.
Для того чтобы продукт был «интересным» в этом же смысле, он действительно должен защищать свое собственное состояние от недействительности. Вы не ожидали бы, что Продукт будет запрещать писать недействительный договор купли-продажи, потому что это контракт на продажу. Продукт должен отвечать за предотвращение несогласованных внутренних изменений.
Если у продукта нет правил для ограничения того, как он изменяется с течением времени, моделируйте его как идентификатор и мешок свойств и продолжайте жизнь.
- 1. C# DDD - Создание объекта домена
- 2. Свойства объекта DDD и объекта домена
- 3. Является ли объект DDD скрытым в моем объекте Value DDD?
- 4. DDD Пользовательские настройки домена
- 5. Дизайн создания DDD-объекта
- 6. Загружать дочерние коллекции сущности домена в DDD
- 7. Возможна декларативная модель домена (DDD)?
- 8. Внедрение службы домена в AggregateRoots в DDD
- 9. DDD: Где разместить события домена
- 10. События домена для местного потребления в DDD
- 11. DDD-разделение объектов домена и объектов EF
- 12. DDD + node.js: где должна идти логика домена
- 13. уникальная проверка в DDD
- 14. Проверка объекта DDD
- 15. Должна быть локализация части домена в DDD
- 16. Модель домена в DDD с одинаковым поведением
- 17. Моделирование доменов, объекты домена в DDD
- 18. DDD Когда я должен создать объект домена и объект persistence вместо использования объекта persistence в качестве объекта домена?
- 19. Аудит DDD? Уровень домена или уровень хранилища?
- 20. Проверка дочернего объекта DDD
- 21. DDD, сущности домена/VO и JPA
- 22. DDD, PHP. Объект домена и бизнес-логика
- 23. Путаница DDD/CQRS относительно ReadModels и домена
- 24. DDD - Постоянство вне домена, как его назвать?
- 25. Это приложение DDD или служба домена?
- 26. DDD + Внутренние службы WCF Предоставление домена
- 27. Сопоставление моделей домена DDD с EF POCO
- 28. DDD родовое против конкретных событий домена
- 29. DDD: Где сохраняются данные без домена?
- 30. Создание модели домена при каждом вызове, DDD