Может кто-нибудь объяснить (в сжатой форме), что именно является доменным дизайном? Я довольно часто вижу этот термин, но на самом деле не понимаю, что это такое или как оно выглядит. Чем он отличается от не доменного дизайна?
Кроме того, кто-нибудь может объяснить, что такое доменный объект? Чем домен отличается от обычных объектов?
domain-driven-design
калянус
источник
источник
Ответы:
РЕДАКТИРОВАТЬ:
Поскольку это, похоже, лучший результат для Google, а мой ответ ниже - нет, обратитесь к этому гораздо лучшему ответу:
https://stackoverflow.com/a/1222488/1240557
СТАРЫЙ ОТВЕТ (не очень полный :))
От: Домен, управляемый Эриком Эвансом.
Эта книга довольно хорошо описывает описание DDD.
Зарегистрируйтесь, чтобы загрузить краткое изложение книги или загрузить краткое изложение напрямую .
источник
Проектирование на основе доменов - это методология и методическое задание для разработки сложных систем, цель которых - сопоставить действия, задачи, события и данные в проблемной области с технологическими артефактами в области решения.
Основной упор в доменно-ориентированном проектировании - понять проблемную область, чтобы создать абстрактную модель проблемной области, которая затем может быть реализована в определенном наборе технологий. Доменно-управляемый дизайн в качестве методологии содержит рекомендации о том, как разработка этой модели и разработка технологий могут привести к созданию системы, которая отвечает потребностям людей, использующих ее, и в то же время будет устойчивой к изменениям в проблемной области.
Процессная сторона Domain Driven Design включает в себя сотрудничество между экспертами по доменам, людьми, которые знают проблемную область, и экспертами по дизайну / архитектуре, людьми, которые знают домен решений. Идея состоит в том, чтобы иметь общую модель с общим языком, чтобы, когда люди из этих двух разных областей со своими двумя разными взглядами обсуждали решение, они фактически обсуждают общую базу знаний с общими понятиями.
Отсутствие общего понимания проблемной области между людьми, которым нужна определенная система, и людьми, которые проектируют и внедряют систему, кажется основным препятствием для успешных проектов. Домен-управляемый дизайн является методологией для устранения этого препятствия.
Это больше, чем объектная модель. На самом деле основное внимание уделяется общению и улучшению совместной работы, чтобы можно было обнаружить реальные потребности в проблемной области и создать соответствующее решение для удовлетворения этих потребностей.
Управляемый доменом дизайн: «Добро и вызов» дает краткий обзор этого комментария:
Также ознакомьтесь с этой статьей « Управляемый доменом дизайн для сервисной архитектуры», в котором приведен краткий пример. В статье приведено следующее описание миниатюрного доменного дизайна.
Мартин Фаулер написал несколько статей, в которых в качестве методологии упоминается доменно-управляемый дизайн. Например, эта статья, BoundedContext , предоставляет обзор концепции ограниченного контекста из разработки, управляемой доменом.
источник
Вы МОЖЕТЕ ТОЛЬКО понять проект, управляемый доменом, сначала поняв, что является следующим:
Отобранный отсюда
источник
Вот еще одна хорошая статья, которую вы можете почитать о домене, управляемом дизайном . если ваше заявление является чем-то серьезным, чем назначение колледжа. Основная предпосылка - структурировать все вокруг ваших сущностей и иметь сильную модель предметной области. Различайте сервисы, которые предоставляют связанные с инфраструктурой вещи (такие как отправка электронной почты, сохраняющиеся данные) и сервисы, которые действительно выполняют ваши основные бизнес-требования.
Надеюсь, это поможет.
источник
Как и в TDD & BDD, вы / команда больше внимания уделяете тестированию и поведению системы, чем реализации кода.
Аналогичным образом, когда системный аналитик, владелец продукта, команда разработчиков и, разумеется, код - сущности / классы, переменные, функции, процессы пользовательских интерфейсов взаимодействуют с использованием одного и того же языка, который называется доменно-управляемым дизайном
DDD - это мыслительный процесс. При моделировании дизайна программного обеспечения вам необходимо держать в центре внимания бизнес-область / процесс, а не структуры данных, потоки данных, технологии, внутренние и внешние зависимости.
Есть много подходов к модели системной с использованием DDD
Доменный объект:
В очень наивных словах, объект, который
источник
DDD (доменный дизайн) является полезной концепцией для анализа требований проекта и обработки сложности этих требований. До того, как люди анализировали эти требования с учетом отношений между классами и таблицами, и фактически их дизайн был основан на таблицах базы данных. Отношения это не старые, но есть некоторые проблемы:
В больших проектах со сложными требованиями это бесполезно, хотя это отличный способ дизайна для небольших проектов.
когда вы не имеете дела с техническими специалистами, у которых нет технической концепции, этот конфликт может вызвать серьезные проблемы в нашем проекте.
Таким образом, DDD решает первую проблему, рассматривая основной проект как домен и разбивая каждую часть этого проекта на маленькие части, которые известны нам как ограниченный контекст, и каждая из них не имеет никакого влияния на другие части. И вторая проблема была решена с помощью вездесущего языка, который является общим языком между членами технической команды и владельцами продукта, которые не являются техническими, но имеют достаточно знаний о своих требованиях
Как правило, простое определение для домена является основным проектом, который приносит деньги владельцам и другим командам.
источник
Я считаю, что следующий PDF даст вам большую картину. Дизайн, управляемый доменом, Эрик Эванс
ПРИМЕЧАНИЕ: подумайте о проекте, над которым вы можете работать, примените мелочи, которые вы поняли, и ознакомьтесь с лучшими практиками. Это также поможет вам развить ваши способности к проектированию архитектуры микросервисов.
источник
Я не хочу повторять чужие ответы, поэтому вкратце объясняю некоторые распространенные недоразумения
Вы должны избегать использования всего этого в вашем проекте
По сути, это потому, что это требует слишком много времени и усилий. Таким образом, предлагается разбить весь домен на поддомен и просто применить его для тех, кто имеет высокую деловую ценность. (бывший не в общем поддомене, как электронная почта, ...)
Это не объектно-ориентированное программирование. Это в основном подход к решению проблем, и ( иногда ) вам не нужно использовать ОО-шаблоны (такие как «Банда четырех») в ваших моделях доменов. Просто потому, что это не может быть понято бизнес-экспертами (они мало знают о Factory, Decorator, ...). В DDD есть даже некоторые шаблоны (такие как «Сценарий транзакции», «Модуль таблицы»), которые не на 100% соответствуют концепциям ОО.
источник