Saltar al contenido principal
Volver a Patrones y Buenas Prácticas

Patrones y Buenas Prácticas — Leccion 2

·15 min

Patrón Factory

Crea objetos sin especificar la clase exacta.

Factory

El patrón Factory crea objetos sin exponer la lógica de creación.

typescript
interface Transporte {
  entregar(): string;
}

class Auto implements Transporte {
  entregar() {
    return "Entregando por tierra en auto";
  }
}

class Avion implements Transporte {
  entregar() {
    return "Entregando por aire en avión";
  }
}

class TransporteFactory {
  static crear(tipo: "auto" | "avión"): Transporte {
    switch (tipo) {
      case "auto": return new Auto();
      case "avión": return new Avion();
      default: throw new Error("Tipo desconocido");
    }
  }
}

const t1 = TransporteFactory.crear("auto");
const t2 = TransporteFactory.crear("avión");

Factory con objetos

typescript
function crearUsuario(datos: {
  nombre: string;
  rol: "admin" | "user";
}) {
  return {
    ...datos,
    permisos: datos.rol === "admin" ? ["leer", "escribir", "borrar"] : ["leer"],
    fechaCreacion: new Date(),
  };
}

Factory Function

typescript
function crearLogger(nivel: "info" | "error" | "debug") {
  const logs: string[] = [];

  return {
    log(mensaje: string) {
      logs.push(`[${nivel.toUpperCase()}] ${mensaje}`);
    },
    getLogs: () => [...logs],
  };
}

const logger = crearLogger("info");
logger.log("App iniciada");

Ejercicio pratico

Crea un factory que genere diferentes tipos de notificaciones.

exercise.ts
Loading...
Resultado

Haz clic en "Ejecutar" para ver el resultado...

Curso de TypeScript — Aprende desde cero