Sobes.tech
Назад к вопросам
Junior — Middle
71

Можно ли реализовать механизм уведомления нескольких объектов одновременно с помощью паттерна Observer?

Ответ от нейросети

sobes.tech AI

Да, паттерн Observer именно предназначен для уведомления нескольких объектов об изменениях состояния субъекта. В этом паттерне есть объект-субъект, который хранит список наблюдателей (объектов), подписанных на его события. Когда состояние субъекта меняется, он последовательно уведомляет всех подписчиков.

Пример на Swift:

protocol Observer {
    func update()
}

class Subject {
    private var observers = [Observer]()

    func attach(_ observer: Observer) {
        observers.append(observer)
    }

    func notify() {
        observers.forEach { $0.update() }
    }

    func changeState() {
        // изменение состояния
        notify() // уведомляем всех
    }
}

class ConcreteObserver: Observer {
    func update() {
        print("Получено уведомление")
    }
}

let subject = Subject()
let observer1 = ConcreteObserver()
let observer2 = ConcreteObserver()
subject.attach(observer1)
subject.attach(observer2)
subject.changeState() // оба наблюдателя получат уведомление

Таким образом, паттерн Observer позволяет реализовать механизм множественного уведомления.