Ответы:
Во-первых, если вы не знаете, что вам это нужно, возможно, вам это не нужно. Если вы не распознаете проблемы, которые решает DDD, возможно, у вас нет этих проблем. Даже защитники DDD часто отмечают, что DDD предназначен только для крупных (> 6 месяцев) проектов.
Предполагая, что вы все еще читаете в данный момент, мой взгляд на DDD таков:
DDD пытается сделать ваше программное обеспечение моделью реальной системы или процесса. Используя DDD, вы должны тесно сотрудничать с экспертом в области, который может объяснить, как работает реальная система. Например, если вы разрабатываете систему, которая обрабатывает размещение ставок на скачках, ваш эксперт в области может быть опытным букмекером.
Между вами и экспертом в области вы создаете вездесущий язык (UL), который представляет собой концептуальное описание системы. Идея заключается в том, что вы должны быть в состоянии записать, что делает система, так, чтобы эксперт по доменам мог прочитать ее и убедиться, что она правильная. В нашем примере со ставками распространенный язык будет включать в себя определение таких слов, как «раса», «ставка», «шансы» и так далее.
Концепции, описанные в UL, станут основой вашего объектно-ориентированного дизайна. DDD дает некоторые четкие указания о том, как ваши объекты должны взаимодействовать, и помогает вам разделить ваши объекты на следующие категории:
DDD также рекомендует несколько шаблонов:
Теперь я должен сказать, что если вы раньше не слышали ни об одном из этих вещей, вам не следует пытаться использовать DDD в любом проекте, для которого у вас есть крайний срок. Перед тем , как DDD, вы должны быть знакомы с шаблонами проектирования и шаблонами проектирования предприятия . Знание этого делает DDD намного легче понять. И, как упомянуто выше, есть бесплатное введение в DDD, доступное от InfoQ (где вы также можете найти доклады о DDD).
Возьмите StackOverflow в качестве примера. Вместо того, чтобы начинать проектировать некоторые веб-формы, вы сначала концентрируетесь на объектно-ориентированном моделировании объектов в вашей проблемной области, например, пользователей, вопросов, ответов, голосов, комментариев и т. Д. Так как дизайн определяется деталями проблемы Домен это называется доменным дизайном .
Вы можете прочитать больше в книге Эрика Эванса .