Patrón Observer
¿Qué es el Patrón Observer?
El Observer es un patrón de diseño de comportamiento que permite definir una relación uno-a-muchos entre objetos, de modo que cuando uno cambia su estado, se notifica automáticamente a todos sus dependientes (observadores). Es ampliamente utilizado para implementar sistemas de suscripciones y notificaciones.
Código de Ejemplo en JavaScript
class Subject {
constructor() {
this.observers = [];
}
addObserver(observer) {
this.observers.push(observer);
}
removeObserver(observer) {
this.observers = this.observers.filter((obs) => obs !== observer);
}
notifyObservers(message) {
this.observers.forEach((observer) => observer.update(message));
}
}
class Observer {
constructor(name) {
this.name = name;
}
update(message) {
console.log(`${this.name} recibió el mensaje: "${message}"`);
}
}
// Uso del Patrón Observer
const subject = new Subject();
const observer1 = new Observer("Observador 1");
const observer2 = new Observer("Observador 2");
subject.addObserver(observer1);
subject.addObserver(observer2);
subject.notifyObservers("Hola Observadores!"); // Notifica a todos los observadores
subject.removeObserver(observer1);
subject.notifyObservers("Mensaje solo para el Observador 2"); // Solo notifica al observador restante
Casos de Uso
- Sistemas de notificaciones en aplicaciones.
- Actualización de vistas en interfaces gráficas cuando cambia el modelo subyacente.
- Implementación de suscripciones en sistemas de mensajes o eventos.
Patrones Relacionados
- Mediator: Centraliza la comunicación entre objetos, mientras que Observer notifica directamente.
- Publisher-Subscriber: Similar, pero con enfoque en desacoplar el emisor de los receptores.
- State: Administra cambios de estado, pero no los notifica automáticamente.