Sobes.tech
Junior — Middle

È possibile implementare un meccanismo di notifica a più oggetti contemporaneamente usando il pattern Observer?

sobes.tech AI

Risposta dell'AI

Sì, il pattern Observer è progettato appositamente per notificare più oggetti sui cambiamenti di stato del soggetto. In questo pattern, c'è un oggetto-soggetto che mantiene una lista di osservatori (oggetti) iscritti ai suoi eventi. Quando lo stato del soggetto cambia, notifica sequenzialmente tutti gli iscritti.

Esempio 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() {
        // cambio di stato
        notify() // notificare tutti
    }
}

class ConcreteObserver: Observer {
    func update() {
        print("Notifica ricevuta")
    }
}

let subject = Subject()
let observer1 = ConcreteObserver()
let observer2 = ConcreteObserver()
subject.attach(observer1)
subject.attach(observer2)
subject.changeState() // entrambi gli osservatori riceveranno la notifica

In questo modo, il pattern Observer permette di implementare un meccanismo di notifica multipla.