Upload
scrumtrek
View
36
Download
1
Embed Size (px)
Citation preview
Domain Driven Design.Строительные блоки, цемент и
кирпичи
Антон БевзюкМатвей Григорьев
Додо Пицца
ДоДо = IT компания
Domain Driven Design
DDD - продолжение
https://www.youtube.com/watch?v=SpLJq7OAIQ0
DDD
Ubiquitous Language
BoundedContext
DDD
Ubiquitous Language
BoundedContext
Тактическийдизайн
Ubiquitous Language
Уникальная платформа для обмена опытом в Agile и Lean: как быловнедрение, какие проблемы и как им удалось бороться, какзаинтересованные сотрудники и боролись с скептиками.
Конференция будет полезна как динамично развивающийся гуру, таки новички: руководители компаний и руководители проектов, мастера спамеров и владельцы продуктов, разработчики и аналитики, а также все, кто заинтересован в улучшении процессов разработки в вашей компании.
Уникальная площадка для обмена опытом в Agile и Lean: как проходиловнедрение, какие были проблемы и как с ними получалось бороться, как заинтересовывали сотрудников и боролись со скептиками.
Конференция будет полезна как гуру в agile, так и новичкам: руководителям компаний и менеджерам проектов, скрам-мастерам и владельцам продуктов, разработчикам и аналитикам, а также всем, ктозаинтересован в совершенствовании процессов разработки в своейкомпании.
Сущность (Entity)
• Уникальный Id• Иногда сложный
• «Что»
• Состояние может меняться
• Важно отличать, даже если похожи
Сущность (Entity)
Объект-значение (Value Object)
• «Какой»
• Набор атрибутов
• Неизменяемый (immutable)• Нет побочных эффектов
• Может содержать логику
Product
Product
Id
ImageUrl
Variations
Витрина
Product
Id
Title
Price
Quantity
Cost
Корзина
Commodity
Id
Title
Price
Quantity
Tax
Amount
Оплата
DeliveryItem
Id
Title
Quantity
Доставка
ProductVariation
Id
Title
Price
*
Сложность. Bounded Context
Агрегат
• Кластер связанных объектов
• Aggregate root = Entity
• Инвариант
• Удаляется целиком
• Состоит из Entity, Value Object• Локальные Id
• Можно ссылаться на другие агрегаты
ACID
•Atomic — Атомарный
•Consistent — Согласованный
•Isolated — Изолированный
•Durable — Прочный
Фабрика
Фабрика
Фабрика
• Создание агрегата
• Обеспечивает валидность
Сервис
• Операции над сущностями
• Нет состояния
• Не путать с инфраструктурными сервсисами
• Работает с Entity, Value Object
Репозиторий
• Абстракция хранилища• Коллекция
• Язык запросов
• Скрывает техническую реализацию
• Generic<T> vs Custom
Generic Repository
Generic AggregateRoot Repository
Anemic Domain Model
vs
Rich Domain Model
DDD != ООП
ООП
Event Sourcing
Функциональщина + Event Sourcing
Реляционная
Графы
Ссылки
• Тренинг SmartStepGroup по DDD
• Domain-Driven Design: Tackling Complexity in the Heart of Software
• Implementing Domain-Driven Design
• Eric Evans: What I've learned about DDD since the book was published
• Pluralsight - Domain-Driven Design Fundamentals
• Domain-Driven Design Europe 2016