Processing domain events

Как использовать грамотно domain events без вытекания бизнес логики в контроллер

Из книги Unit Testing: Principles, Practices, and Patterns Хориков, 177 страница

Проблема: Бывает, что при вызове метода, который меняет состояние в итоге ничего не должен менять. Database - это implementation details, Domain Events - это observable behavior.

Если вызов метода произошел, то он должен быть отображен для внешних систем. Поскольку database у нас только для внутреннего использования, то тут неважно, будет ли еще один запрос на изменение данных БД.

Наша цель отправлять event только в том случае, если сообщение реально изменилось.

Решение: создать в сущности список созданных событий, чтобы в контроллере не делать if, мол похож ли имейл, просто циклом пробегать, таким образом избегая логики в контроллере.

До:

После:

Last updated