Антон Бевзюк; Матвей Григорьев. Domain Driven Design:...

Preview:

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

Спасибо за внимание!

• Антон Бевзюкa.bevzuk@dodopizza.com

• Матвей Григорьевm.grigorev@dodopizza.com

Recommended