Junior — Middle
Können Sie erklären, wie das Observer-Muster funktioniert und in welchen Fällen es verwendet wird?
sobes.tech KI
Antwort von AI
Das Observer-Muster (Beobachter) ermöglicht es einem Objekt (dem Herausgeber), andere Objekte (Abonnenten) über Änderungen seines Zustands zu informieren, ohne eine enge Kopplung zwischen ihnen. Der Herausgeber hält eine Liste von Abonnenten und benachrichtigt sie bei Änderungen.
Dieses Muster wird häufig zur Implementierung von Ereignissystemen verwendet, z.B. in iOS — NotificationCenter, KVO (Key-Value Observing) oder Delegates.
Beispiel in 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("Wert aktualisiert auf \(value)")
}
}
let subject = Subject()
let observer = ConcreteObserver()
subject.addObserver(observer)
subject.setValue(10) // Gibt aus: Wert aktualisiert auf 10
Verwendet, wenn es notwendig ist, die Datenquelle von den Verbrauchern zu trennen und eine flexible Abonnementsystem für Ereignisse zu gewährleisten.