Please enable JavaScript.
Coggle requires JavaScript to display documents.
Агрегат - Coggle Diagram
Агрегат
Паттерн
Определение
Транзакционные границы
Один агрегат в транзакции
Но это не точно
Инвариант
Программирование по контракту
Кластер сущностей
Aggregate Root
Состав
Сущности
Id
Identity
Велью объекты
Тестируемость
Test first
Тесты на состояние
Не надо дублеров
Стратегические и тактические
Что влияет на границы
Инварианты из бизнес-логики
Размер
Больше - проще
Меньше - лучше перфоманс
DDD триллема
Полнота
Вся бизнес-логика в домене
Чистота
не используются внепроцессные зависимости
Производительность
Нормотворчество
Закон Деметры
Не болтай с незнакомцами
Constintine's Law
A structure is stable
if cohesion is strong
and coupling is low
Coupling (зацепление, связанность)
Cohesion (связность)
Сокрытие
Сокрытие это про снижение предположений
Антипаттерны
Анемичная модель
DTO
Слой доменных сервисов
Анемичная моделька не владеет своими полями
Жонглирование
Как избежать
Отказаться от публичных сеттеров
Отказаться от конструкторов
без параметров
Хорошо подумать прежде чем вводить логику
в сервисе приложения
Универсальная модель
Неприятности
Нет границ и контракта
Сколько лишних данных в объекте?
Непонятно где ждать Null Reference Exception
Каждый раз используется только часть
Хранение
Хранение агрегата
Event Sourcing
Агрегат >> Хранения
Консистентность
Eventual
Outbox Pattern
Optimistic Concurrency
Strong
Optimistic Consistency