Volver al blog

Observer Pattern: manejo de eventos en aplicaciones

·2 min de lectura

¿Qué es el patrón Observer?

Observer define una dependencia uno-a-muchos entre objetos: cuando un objeto (sujeto) cambia su estado, todos sus dependientes (observadores) son notificados automáticamente. Es la base de la programación reactiva y los sistemas de eventos.

Estructura básica

interface Observer {
  update(event: string, data: any): void;
}

class Subject {
  private observers: Observer[] = [];

  subscribe(observer: Observer): void {
    this.observers.push(observer);
  }

  unsubscribe(observer: Observer): void {
    this.observers = this.observers.filter(o => o !== observer);
  }

  notify(event: string, data: any): void {
    this.observers.forEach(o => o.update(event, data));
  }
}

Casos de uso reales

  • Sistemas de notificaciones en tiempo real.
  • Actualización de UI cuando cambia el modelo de datos.
  • Integración con WebSockets y eventos del servidor.
  • Arquitectura basada en eventos (Event Sourcing).

Event Emitter en Node.js

Node.js implementa Observer nativamente con EventEmitter. Úsalo para comunicación desacoplada entre módulos.

import { EventEmitter } from 'events';

const emitter = new EventEmitter();
emitter.on('user:registered', (user) => sendWelcomeEmail(user));

Ventajas y desventajas

Ventajas: desacoplamiento, comunicación flexible, fácil añadir nuevos observers. Desventajas: puede ser difícil de depurar, los observers no saben del orden de notificación.

¿Necesitas implementar eventos en tu app? En Vynta diseñamos sistemas reactivos y escalables.

Artículos relacionados

¿Tienes un proyecto en mente?

Hablemos