Junior — Middle
Môžete vysvetliť, ako funguje vzor Observer a v akých prípadoch sa používa?
sobes.tech AI
Odpoveď od AI
Vzor Observer (Pozorovateľ) umožňuje objektu (vydavateľovi) informovať iné objekty (odberateľov) o zmenách jeho stavu bez pevného spojenia medzi nimi. Vydavateľ uchováva zoznam odberateľov a informuje ich pri zmenách.
Tento vzor sa často používa na implementáciu systémov udalostí, napríklad v iOS — NotificationCenter, KVO (Key-Value Observing) alebo delegáti.
Príklad v 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("Hodnota bola aktualizovaná na \(value)")
}
}
let subject = Subject()
let observer = ConcreteObserver()
subject.addObserver(observer)
subject.setValue(10) // Výstup: Hodnota bola aktualizovaná na 10
Používa sa, keď je potrebné oddeliť zdroj dát od spotrebiteľov a zabezpečiť flexibilné prihlásenie k udalostiam.