DevPath · Aprenda a programar ESPTEN

Padrões de projeto

Singleton e observer

Padrão singleton

Garante que exista uma única instância de um objeto em toda a aplicação, com um ponto de acesso global. Útil para configuração, caches ou conexões.

const Configuracion = (function () {
  let instancia;

  function crear() {
    return { tema: "claro", idioma: "pt" };
  }

  return {
    obtener() {
      if (!instancia) instancia = crear();
      return instancia;
    },
  };
})();

const a = Configuracion.obtener();
const b = Configuracion.obtener();
console.log(a === b); // true: é a mesma instância

Padrão observer

Define uma relação um para muitos: um sujeito mantém uma lista de observadores e os notifica quando ocorre uma mudança. É a base dos sistemas de eventos.

class Sujeto {
  constructor() {
    this.observadores = [];
  }
  suscribir(fn) {
    this.observadores.push(fn);
  }
  notificar(dato) {
    for (const obs of this.observadores) obs(dato);
  }
}

const noticias = new Sujeto();
noticias.suscribir((titular) => console.log("Leitor 1:", titular));
noticias.suscribir((titular) => console.log("Leitor 2:", titular));
noticias.notificar("Nova versão do JavaScript!");

Exemplos

Observer: lista de tarefas reativa

class Emisor {
  constructor() { this.subs = []; }
  on(fn) { this.subs.push(fn); }
  emitir(dato) { this.subs.forEach((fn) => fn(dato)); }
}
const e = new Emisor();
e.on((x) => console.log("Recebido:", x));
e.emitir("olá");
e.emitir("mundo");
Coloque isto em prática

O DevPath é um curso prático: aqui você lê a teoria; no app você a coloca em prática com exercícios que rodam de verdade, offline.

Comece grátis no app →
← Padrões módulo e factoryPadrão strategy →