Junior — Middle
¿Puedes explicar cómo funciona el patrón Observer y en qué casos se utiliza?
sobes.tech AI
Respuesta de la IA
El patrón Observer (Observador) permite que un objeto (el emisor) notifique a otros objetos (los suscriptores) sobre cambios en su estado sin una relación rígida entre ellos. El emisor mantiene una lista de suscriptores y los notifica cuando hay cambios.
Este patrón se usa a menudo para implementar sistemas de eventos, por ejemplo, en iOS — NotificationCenter, KVO (Key-Value Observing) o delegados.
Ejemplo en 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 actualizado a \(value)")
}
}
let subject = Subject()
let observer = ConcreteObserver()
subject.addObserver(observer)
subject.setValue(10) // Imprimirá: Valor actualizado a 10
Se utilizan cuando es necesario separar la fuente de datos de los consumidores y garantizar una suscripción flexible a eventos.