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