Sobes.tech
Junior — Middle

Чӣ гуна намунаи Observer ба объектҳои сабтшуда дар бораи тағирот огоҳ мекунад?

sobes.tech AI

Ҷавоб аз 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)
        }
    }
}

Таким образом, паттерн обеспечивает слабую связанность между объектами и удобен для реализации событийных систем.