Участники
- Subject (Publisher) — хранит список наблюдателей, предоставляет методы
subscribe / unsubscribe / notify - Observer (Subscriber) — реализует метод
update(), вызываемый субъектом
Где встречается
- DOM-события в браузере (
addEventListener) - Системы событий во фреймворках (EventEmitter в Node.js)
- Reactive Programming (RxJS Observable)
- Внутренняя шина событий приложения
Observer vs Pub/Sub
В Observer субъект знает о своих наблюдателях напрямую. В Pub/Sub между ними есть посредник (брокер): издатель и подписчик не знают друг о друге.