Дизайн, ориентированный на предметную область
-
Основы предметно-ориентированного дизайна
- Предметно-ориентированный дизайн (DDD) фокусируется на моделировании предметной области для разработки программного обеспечения.
- DDD использует высокоуровневые концепции и практики для создания общего языка между экспертами, пользователями и разработчиками.
-
Обзор предметно-ориентированного дизайна
- DDD включает в себя создание модели предметной области, стратегическое и тактическое проектирование, а также использование вездесущего языка.
- Модель предметной области является ключевым элементом DDD, а также стратегическое и тактическое проектирование.
-
Виды моделей в DDD
- Модели могут описывать сущности, значения, события и агрегаты.
- Агрегаты представляют собой совокупность объектов, которые управляются как единое целое.
-
Работа с моделями в DDD
- Создание объектов часто отделено от их фактического создания, что позволяет создавать репозитории и фабрики.
- Сервисы используются для описания функций, которые не принадлежат объектам.
-
Связь с другими идеями
- DDD связан с микросервисами и объектно-ориентированными подходами, такими как сущности/агрегатные корни и инкапсуляция состояния.
- Шаблон «голые объекты» утверждает, что пользовательский интерфейс должен отражать модель предметной области.
-
Влияние на другие подходы к разработке ПО
- DDD оказал влияние на проектирование, управляемое предметной областью, и аспектно-ориентированное программирование.
-
Разделение ответственности за выполнение командных запросов (CQRS)
- CQRS разделяет команды и запросы, что упрощает управление состоянием и логикой операций.
- Агрегатные корни отвечают за выполнение команд и публикацию событий.
-
Поиск источников событий
- Источник событий позволяет объектам отслеживать свое состояние через события, что упрощает применение аксиоматических теорем.
-
Известные инструменты для DDD
- Actifsource, Context Mapper, CubicWeb, OpenMDX и Restful Objects — это примеры инструментов, которые поддерживают DDD.
-
Рекомендации и внешние ссылки
- Ссылки на ресурсы и команды DDD доступны на GitHub.