Что такое Доменный управляемый дизайн (DDD)? [закрытый]

Для меня это было Шаблоны разработки, Объясненные , это обеспечило, 'О, это - то, как это момент работ для меня в отношении шаблонов разработки и было очень полезно при обучении шаблонов разработки другим.

257
задан halfer 10 August 2019 в 08:14
поделиться

2 ответа

Во-первых, если вы не знаете, что он вам нужен, возможно, он вам и не нужен. Если вы не осознаете проблемы, которые решает DDD, возможно, у вас их нет. Даже сторонники DDD часто указывают на то, что DDD предназначен только для крупных (> 6 месяцев) проектов.

Предполагая, что вы все еще читаете этот момент, я так понимаю DDD:

DDD пытается помочь сделайте свое программное обеспечение моделью реальной системы или процесса. При использовании DDD вы должны тесно сотрудничать с экспертом в предметной области , который может объяснить, как работает реальная система. Например, если вы разрабатываете систему, которая обрабатывает ставки на скачки, вашим экспертом в предметной области может быть опытный букмекер.

Между вами и экспертом в предметной области, вы создаете вездесущий язык (UL), который по сути является концептуальным описанием системы. Идея состоит в том, чтобы вы могли записывать, что делает система, таким образом, чтобы эксперт в предметной области мог прочитать это и убедиться, что это правильно. В нашем примере со ставками универсальный язык будет включать определение таких слов, как «гонка», «ставка», «шансы» и т. Д.

Концепции, описанные UL, лягут в основу вашего объектно-ориентированного дизайна. . DDD предоставляет некоторые четкие инструкции о том, как ваши объекты должны взаимодействовать, и помогает вам разделить ваши объекты на следующие категории:

  • Объекты значений, которые представляют значение, которое может иметь части (например, у даты может быть день, месяц и год)
  • Сущности, которые являются объектами с идентичностью . Например, каждый объект Customer имеет свою собственную идентичность, поэтому мы знаем, что два клиента с одинаковым именем не являются одним и тем же клиентом
  • Совокупные корни - это объекты, которым принадлежат другие объекты. Это сложная концепция, основанная на том, что некоторые объекты не имеют смысла, если у них нет владельца. Например, объект «Строка заказа» не имеет смысла без принадлежности «Порядок», поэтому мы говорим, что Заказ является совокупным корнем, а объектами «Строка заказа» можно управлять только с помощью методов в объекте «Заказ»

DDD также рекомендует несколько шаблонов:

  • Репозиторий , шаблон для сохранения (сохранение и загрузка ваших данных, обычно в / из базы данных)
  • Factory , шаблон для создания объектов
  • Service , шаблон для создания объектов, которые манипулируют объектами вашего основного домена, не являясь частью самого домена

Теперь, в этот момент я должен сказать, что если вы не слышали ни о чем из этих вещей раньше, вы не должны пытаетесь использовать DDD в любом проекте, для которого у вас есть крайний срок. Прежде чем пытаться использовать DDD, вы должны ознакомиться с шаблонами проектирования и шаблонами проектирования предприятия . Знание их значительно упрощает понимание DDD. И, как упоминалось выше, существует бесплатное введение в DDD , доступное в InfoQ (где вы также можете найти информацию о DDD).

Прежде чем пытаться использовать DDD, вы должны ознакомиться с шаблонами проектирования и шаблонами проектирования предприятия . Знание их значительно упрощает понимание DDD. И, как упоминалось выше, существует бесплатное введение в DDD , доступное в InfoQ (где вы также можете найти информацию о DDD).

Прежде чем пытаться использовать DDD, вы должны ознакомиться с шаблонами проектирования и шаблонами проектирования предприятия . Знание их значительно упрощает понимание DDD. И, как упоминалось выше, существует бесплатное введение в DDD , доступное в InfoQ (где вы также можете найти информацию о DDD).

544
ответ дан 23 November 2019 в 02:43
поделиться

В качестве примера возьмем StackOverflow. Вместо того, чтобы приступить к разработке некоторых веб-форм, вы сначала сосредотачиваетесь на объектно-ориентированном моделировании сущностей в вашей проблемной области, например, пользователей, вопросов, ответов, голосов, комментариев и т. Д. Поскольку дизайн определяется деталями проблемы. домен называется доменно-управляемым дизайном .

Вы можете прочитать больше в книге Эрика Эванса .

42
ответ дан 23 November 2019 в 02:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: