Назад к вопросам
Junior — Middle
66
Каким образом паттерн Observer оповещает зарегистрированные объекты об изменениях?
Ответ от нейросети
sobes.tech AI
Паттерн Observer реализует механизм подписки, где один объект (Subject) хранит список наблюдателей (Observers) и оповещает их об изменениях своего состояния.
Когда состояние Subject меняется, он вызывает метод уведомления (например, notifyObservers), который перебирает всех зарегистрированных наблюдателей и вызывает у них метод обновления (update). Таким образом, все подписчики получают актуальную информацию и могут реагировать на изменения.
Пример на Kotlin для Android:
interface Observer {
fun update(data: String)
}
class Subject {
private val observers = mutableListOf<Observer>()
private var state: String = ""
fun registerObserver(observer: Observer) {
observers.add(observer)
}
fun unregisterObserver(observer: Observer) {
observers.remove(observer)
}
fun setState(newState: String) {
state = newState
notifyObservers()
}
private fun notifyObservers() {
for (observer in observers) {
observer.update(state)
}
}
}
Таким образом, паттерн обеспечивает слабую связанность между объектами и удобен для реализации событийных систем.