Sobes.tech
Junior — Middle

É possível implementar um mecanismo de notificação a vários objetos ao mesmo tempo usando o padrão Observer?

sobes.tech IA

Resposta da IA

Sim, o padrão Observer destina-se especificamente a notificar vários objetos sobre alterações no estado do sujeito. Neste padrão, há um objeto-sujeito que mantém uma lista de observadores (objetos) inscritos nos seus eventos. Quando o estado do sujeito muda, ele notifica sequencialmente todos os assinantes.

Exemplo em 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() {
        // alteração de estado
        notify() // notificamos todos
    }
}

class ConcreteObserver: Observer {
    func update() {
        print("Notificação recebida")
    }
}

let subject = Subject()
let observer1 = ConcreteObserver()
let observer2 = ConcreteObserver()
subject.attach(observer1)
subject.attach(observer2)
subject.changeState() // ambos os observadores receberão a notificação

Assim, o padrão Observer permite implementar um mecanismo de notificação múltipla.