Junior — Middle
Můžete vysvětlit, jak funguje vzor Observer a v jakých případech se používá?
sobes.tech AI
Odpověď od AI
Vzor Observer (Pozorovatel) umožňuje objektu (vydavateli) upozorňovat jiné objekty (odběratele) na změny svého stavu bez pevného spojení mezi nimi. Vydavatel uchovává seznam odběratelů a informuje je při změnách.
Tento vzor se často používá k implementaci systémů událostí, například v iOS — NotificationCenter, KVO (Key-Value Observing) nebo delegáti.
Pří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 byla aktualizována na \(value)")
}
}
let subject = Subject()
let observer = ConcreteObserver()
subject.addObserver(observer)
subject.setValue(10) // Výstup: Hodnota byla aktualizována na 10
Používá se, když je třeba oddělit zdroj dat od spotřebitelů a zajistit flexibilní přihlášení k událostem.