DevPath · Aprenda a programar ESPTEN

Padrões de projeto

Padrões módulo e factory

O que é um padrão de projeto?

Um padrão de projeto é uma solução comprovada e reutilizável para um problema comum no projeto de software. Não é código que você copia literalmente, mas uma ideia que você adapta ao seu caso.

Padrão módulo

Permite encapsular estado privado e expor apenas uma interface pública, aproveitando os closures.

const contador = (function () {
  let cuenta = 0; // privado: ninguém de fora pode tocá-lo

  return {
    incrementar() { cuenta++; },
    valor() { return cuenta; },
  };
})();

contador.incrementar();
console.log(contador.valor()); // 1
// console.log(contador.cuenta); // undefined: é privado

Padrão factory

Uma factory é uma função que cria objetos, ocultando os detalhes de como eles são construídos. É uma alternativa mais flexível do que usar new diretamente.

function crearUsuario(nombre, rol) {
  return {
    nombre,
    rol,
    saludar() {
      return `Olá, sou ${nombre} (${rol})`;
    },
  };
}

const admin = crearUsuario("Ana", "admin");
console.log(admin.saludar());

A factory permite decidir que tipo de objeto criar em tempo de execução, sem acoplar o código a uma classe específica.

Exemplos

Módulo com estado privado

const banco = (function () {
  let saldo = 0;
  return {
    depositar(x) { saldo += x; },
    consultar() { return saldo; },
  };
})();
banco.depositar(100);
banco.depositar(50);
console.log("Saldo:", banco.consultar());

Factory conforme o tipo

function crearForma(tipo, tamano) {
  if (tipo === "cuadrado") return { area: () => tamano * tamano };
  if (tipo === "circulo") return { area: () => Math.PI * tamano * tamano };
}
console.log("Área quadrado:", crearForma("cuadrado", 4).area());
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 →
Singleton e observer →