Sobes.tech
Junior — Middle

Peut-on implémenter un mécanisme de notification à plusieurs objets simultanément en utilisant le pattern Observer?

sobes.tech IA

Réponse de l'IA

Oui, le patron Observer est spécifiquement conçu pour notifier plusieurs objets des changements d’état du sujet. Dans ce patron, il y a un objet-sujet qui maintient une liste d’observateurs (objets) abonnés à ses événements. Lorsque l’état du sujet change, il notifie successivement tous les abonnés.

Exemple en 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() {
        // changement d’état
        notify() // notifier tous
    }
}

class ConcreteObserver: Observer {
    func update() {
        print("Notification reçue")
    }
}

let subject = Subject()
let observer1 = ConcreteObserver()
let observer2 = ConcreteObserver()
subject.attach(observer1)
subject.attach(observer2)
subject.changeState() // les deux observateurs recevront la notification

Ainsi, le patron Observer permet de réaliser un mécanisme de notification multiple.