Ответ
Паттерн Observer (Наблюдатель) — поведенческий шаблон, позволяющий объектам подписываться на события других объектов и реагировать на их изменения.
Основные компоненты:
Subject(издатель) — хранит список подписчиков, умеет добавлять/удалять их и оповещать о событиях.Observer(подписчик) — интерфейс с методомupdate(), который вызывается при изменении состояния издателя.
Пример на Kotlin:
interface Observer {
fun update(data: String)
}
class Subject {
private val observers = mutableListOf<Observer>()
fun addObserver(observer: Observer) {
observers.add(observer)
}
fun notifyObservers(data: String) {
observers.forEach { it.update(data) }
}
}
class ConcreteObserver : Observer {
override fun update(data: String) {
println("Received: $data")
}
}
Использование:
val subject = Subject()
subject.addObserver(ConcreteObserver())
subject.notifyObservers("Hello!") // Выведет: "Received: Hello!"
Где применяется: LiveData, RxJava, BroadcastReceiver.