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.