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.
Whatsapp Mentores Tech