Back to questions
Junior — Middle
72
Можно ли реализовать механизм уведомления нескольких объектов одновременно с помощью паттерна Observer?
Answer from AI
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 позволяет реализовать механизм множественного уведомления.