Chain Of Responsibility vs Event Bus, в чем принципиальная разница?

Привет,

Чем принципиально отличаются паттерны Chain of Responsibility и Event Bus?

Chain of Responsibility нужен для ослабления связи между сущностями, придания системе гибкости, и возможности множественной обработки единственного входящего запроса.

Event Bus решает эти же проблемы, и при реализации с обрывом цепи обработки, достигается ровно тот же эффект, как и Chain Of Responsibility, но с одним плюсом в виде отсутствия необходимости создания цепей вручную, так как привязка идет по событию.

Допустим, речь идет о получении ответа от обработчиков, но в таком случае аналогичный эффект можно получить и от Event Bus.

Господа, какие у вас мысли?
  • Вопрос задан
  • 291 просмотр
Решения вопроса 1
@EvgeniiR
https://github.com/EvgeniiR
1. Если нужен порядок обработки в event bus, возможно у вас в системе есть проблемы(см. Temporal coupling)

2. Да, паттерны решают похожие задачи, есть разница в децентрализации. В Chain if responsibility есть менеджер который который цепочку вызывает по порядку.
В то время как event - событие, факт, один модуль кидает ивент и ему нет никакого дела кто будет его обрабатывать и кому этот ивент интересен.
Обработчики ивентов не знают друг о друге и никак на другие обработчики не полагаются, и ни один обработчикик не может остановить дальнейшую обработку события. (Поэтому ивенты в js с их stopPropagation(), или "events" в некоторых фреймворках не совсем ивенты).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы