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.