Junior — Middle
92
Можете объяснить, как работает паттерн Observer и в каких случаях его используют?
AI-дан жауап
sobes.tech AI
Паттерн Observer (Наблюдатель) позволяет объекту (издателю) уведомлять другие объекты (подписчики) об изменениях своего состояния без жесткой связи между ними. Издатель хранит список подписчиков и оповещает их при изменениях.
Этот паттерн часто используется для реализации событийных систем, например, в iOS — NotificationCenter, KVO (Key-Value Observing) или делегаты.
Пример на Swift:
protocol Observer: AnyObject {
func update(value: Int)
}
class Subject {
private var observers = [Observer]()
private var value: Int = 0 {
didSet {
notify()
}
}
func addObserver(_ observer: Observer) {
observers.append(observer)
}
func setValue(_ newValue: Int) {
value = newValue
}
private func notify() {
observers.forEach { $0.update(value: value) }
}
}
class ConcreteObserver: Observer {
func update(value: Int) {
print("Value updated to \(value)")
}
}
let subject = Subject()
let observer = ConcreteObserver()
subject.addObserver(observer)
subject.setValue(10) // Выведет: Value updated to 10
Используют, когда нужно отделить источник данных от потребителей и обеспечить гибкую подписку на события.