Sobes.tech
Junior — Middle

¿Se puede implementar un mecanismo de notificación a múltiples objetos simultáneamente usando el patrón Observer?

sobes.tech AI

Respuesta de la IA

Sí, el patrón Observer está diseñado específicamente para notificar a múltiples objetos sobre cambios en el estado del sujeto. En este patrón, hay un objeto-sujeto que mantiene una lista de observadores (objetos) suscritos a sus eventos. Cuando el estado del sujeto cambia, notifica secuencialmente a todos los suscriptores.

Ejemplo 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() {
        // cambio de estado
        notify() // notificamos a todos
    }
}

class ConcreteObserver: Observer {
    func update() {
        print("Notificación recibida")
    }
}

let subject = Subject()
let observer1 = ConcreteObserver()
let observer2 = ConcreteObserver()
subject.attach(observer1)
subject.attach(observer2)
subject.changeState() // ambos observadores recibirán la notificación

De esta manera, el patrón Observer permite implementar un mecanismo de notificación múltiple.