Sobes.tech
Junior — Middle

Kann ein Benachrichtigungsmechanismus für mehrere Objekte gleichzeitig mit dem Observer-Muster implementiert werden?

sobes.tech KI

Antwort von AI

Ja, das Observer-Muster ist speziell dafür vorgesehen, mehrere Objekte über Änderungen am Zustand des Subjekts zu benachrichtigen. In diesem Muster gibt es ein Subjekt-Objekt, das eine Liste von Beobachtern (Objekten) führt, die auf seine Ereignisse abonniert sind. Wenn sich der Zustand des Subjekts ändert, benachrichtigt es sequenziell alle Abonnenten.

Beispiel in Swift:

protocol Observer {
    func update()
}

class Subject {
    private var observers = [Observer]()

    func attach(_ observer: Observer) {
        observers.append(observer)
    }

    func notify() {
        observers.forEach { $0.update() }
    }

    func changeState() {
        // Zustandsänderung
        notify() // alle benachrichtigen
    }
}

class ConcreteObserver: Observer {
    func update() {
        print("Benachrichtigung empfangen")
    }
}

let subject = Subject()
let observer1 = ConcreteObserver()
let observer2 = ConcreteObserver()
subject.attach(observer1)
subject.attach(observer2)
subject.changeState() // beide Beobachter erhalten die Benachrichtigung

Auf diese Weise ermöglicht das Observer-Muster die Implementierung eines Mechanismus für multiple Benachrichtigungen.