Volver a Patrones y Buenas Prácticas
Patrones y Buenas Prácticas — Leccion 2
·15 minPatró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...