DDD Lite

Domain-Driven Design без фанатизма: практичные паттерны

Уровень: Продвинутый · около 5 ч · после курса: Опишешь домен словами предметной области: сущности, агрегаты и границы контекстов

Чему научишься

  • Различить Entity, Value Object и Aggregate
  • Спроектировать Bounded Context
  • Применить Repository pattern
  • Использовать Domain Events
  • Отделить инфраструктуру от домена
  • Избежать anaemic domain model

Уроки курса (9)

Модуль 1 · Основы домена

Что такое домен и зачем общий словарь команды

  1. DDD Lite: что такое домен и почему это про слова - DDD без академизма: как перестать писать «UserService из ада»
  2. Ubiquitous Language: общий словарь команды - Когда «урок» и «лекция» - это разные вещи (и это важно)

Модуль 2 · Строительные блоки

Entity, Value Object, Aggregate, сервисы и репозитории

  1. Entity и Value Object: кто есть кто - User - сущность, Email - значение. И это меняет правила игры
  2. Aggregates и инварианты: правила, которые нельзя нарушать - Как не допустить «прогресс 200%» и «урок без курса»
  3. Domain Service vs Application Service - Где живёт бизнес-логика, а где сценарии
  4. Repositories в DDD: что они должны делать - Репозиторий - не свалка методов getByWhatever

Модуль 3 · Контексты, события, проект

Bounded Context, Domain Events и финальная модель

  1. Bounded Context: границы предметных областей - Не смешивай «обучение» и «платежи» в один суп
  2. Domain Events: события домена и путь к Event-Driven - «Урок пройден» - это факт, который полезно сообщить миру
  3. Мини-проект: доменная модель BackendStart (Course/Lesson/Progress) - Собираем DDD Lite на практике