Перейти к содержанию

Методы агрегата полностью полагаются на события

Чтобы обработать запрос и обновить агрегат, бизнес-логика вызывает командный метод из его корня. В традиционном подходе такой метод проверяет свои аргументы и обновляет одно или несколько полей агрегата. При порождении событий командные методы должны генерировать события. Результатом вызова командного метода агрегата является последовательность событий, описывающих изменения, которые нужно применить к агрегату, чтобы перевести его в новое состояние.
Pasted image 20210927201136.png
Порождение событий превращает командный метод в два и более метода. Первый принимает команду и определяет, какое изменение состояния нужно выполнить, проверяет аргументы и не меняя состояния агрегата, возвращает список событий, описывающих переход состояния. Если команду нельзя выполнить, генерируется исключение.
Остальные методы принимают в качестве параметра событие определенного типа и обновляют агрегат. Для каждого события — свой метод. Важно отметить, что эти методы не могут отказать, так как событие представляет изменение состояния, которое уже произошло.
Такие методы могут быть оформлены в виде ряда перегруженных методов с именами, скажем, process() для методов первого этапа (перегрузка засчёт разных классов команд), и apply() для методов второго этапа (перегрузка засчёт классов событий).


Последнее обновление : 25 мая 2023 г.
Дата создания : 29 июля 2022 г.

Комментарии

Комментарии