Junior — Middle
Pode explicar como funciona o padrão Observer e em que casos é utilizado?
sobes.tech IA
Resposta da IA
O padrão Observer (Observador) permite que um objeto (o emissor) notifique outros objetos (assinantes) sobre alterações no seu estado sem uma ligação rígida entre eles. O emissor mantém uma lista de assinantes e os notifica quando há alterações.
Este padrão é frequentemente usado para implementar sistemas de eventos, por exemplo, no iOS — NotificationCenter, KVO (Key-Value Observing) ou delegados.
Exemplo em Swift:
protocol Observer: AnyObject {
func update(value: Int)
}
class Subject {
private var observers = [Observer]()
private var value: Int = 0 {
didSet {
notify()
}
}
func addObserver(_ observer: Observer) {
observers.append(observer)
}
func setValue(_ newValue: Int) {
value = newValue
}
private func notify() {
observers.forEach { $0.update(value: value) }
}
}
class ConcreteObserver: Observer {
func update(value: Int) {
print("Valor atualizado para \(value)")
}
}
let subject = Subject()
let observer = ConcreteObserver()
subject.addObserver(observer)
subject.setValue(10) // Vai imprimir: Valor atualizado para 10
Usado quando é necessário separar a fonte de dados dos consumidores e garantir uma assinatura flexível para eventos.