👁 Паттерн Observer
Observer — поведенческий паттерн, который создаёт механизм подписки: одни объекты следят за событиями других и реагируют на них. Источник событий не знает, кто именно подписан и что произойдёт.
Использование
🔹 Когда изменение одного объекта должно автоматически обновлять другие — и вы не знаете заранее, сколько их.
🔹 Когда объекты должны уведомлять других без жёсткой связи между ними.
🔹 Когда набор реакций на событие может меняться в рантайме.
Преимущества
1️⃣ Слабая связанность
Источник события ничего не знает о подписчиках — только то, что они реализуют нужный интерфейс. Добавить нового подписчика можно, не трогая источник.
2️⃣ Динамическая подписка
Подписчики добавляются и удаляются в рантайме. Поведение системы меняется без перекомпиляции.
3️⃣ Соответствие принципу Open/Closed.
Новая реакция на событие — новый подписчик. Источник и существующие подписчики не меняются.
⚠️ Утечки памяти. Подписчик, который не отписался — не будет собран GC, пока жив источник.
В Spring: ApplicationEventPublisher + @EventListener — это Observer из коробки. Добавить @Async к слушателю и подписчик изолирован от основного потока.
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#CoreJava
Post #7552
2.42K

- 👍 6
- ❤ 2
- 🔥 1