Sobes.tech
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.