Sobes.tech
Junior — Middle

Is het mogelijk om een notificatiemechanisme voor meerdere objecten tegelijk te implementeren met behulp van het Observer-patroon?

sobes.tech AI

Antwoord van AI

Ja, het Observer-patroon is specifiek ontworpen om meerdere objecten te informeren over veranderingen in de toestand van het onderwerp. In dit patroon is er een onderwerp-object dat een lijst bijhoudt van waarnemers (objecten) die op zijn gebeurtenissen zijn geabonneerd. Wanneer de toestand van het onderwerp verandert, informeert het sequentieel alle abonnees.

Voorbeeld 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() {
        // toestand wijzigen
        notify() // iedereen informeren
    }
}

class ConcreteObserver: Observer {
    func update() {
        print("Ontvangst van notificatie")
    }
}

let subject = Subject()
let observer1 = ConcreteObserver()
let observer2 = ConcreteObserver()
subject.attach(observer1)
subject.attach(observer2)
subject.changeState() // beide waarnemers ontvangen de notificatie

Op deze manier maakt het Observer-patroon het mogelijk om een mechanisme voor meervoudige notificatie te implementeren.