CodeForge

JavaScript de Cero a Experto / Patrones y observables

Factory: fábricas que deciden por ti

Teoría18 min20 XP

Llevas dos módulos fabricando cosas: closures con estado (módulo 12), clases con new (módulo 11). El patrón factory les pone el marco: una FUNCIÓN cuyo oficio es construir y entregar objetos listos — decidiendo por dentro los detalles que quien pide no debería cargar. Es el patrón más usado del ecosistema, y hoy le aprendes el criterio.

La cocina del menú ejecutivo

La factory con estado privado

La forma básica ya la dominas — es el closure del módulo 3 con traje de patrón:

Cada llamada fabrica un bolsillo independiente con SU mochila — mira que no hay new, no hay this, no hay clase… y la privacidad es tan real como la del #. Esta forma brilla para objetos pequeños y medianos; su costo honesto: cada instancia carga sus propias copias de los métodos (lo que las clases evitan con el prototipo, módulo 11) — con miles de instancias pesa, con decenas da igual.

La factory que DECIDE: el patrón completo

El valor grande aparece cuando la fábrica elige la variante — el switch vive en UN lugar y los que piden ni se enteran:

Este es el patrón que verás por todo el ecosistema: crearGasto es el ÚNICO lugar que sabe qué variantes existen. ¿Llega mañana el GastoCompartido? Tocas la fábrica y listo — los veinte lugares que llaman crearGasto no cambian ni una letra. Compáralo con veinte if (tieneDiaDeCobro) new GastoFijo(...) else new ... regados: el mismo cambio serían veinte cirugías.

Factory vs class: el criterio

  • Pocas instancias + privacidad simple + cero ceremonia → factory (configs, servicios, los "stores" que vienen en dos lecciones).
  • Muchas instancias / jerarquías / instanceof / la memoria importaclass (los datos del dominio: gastos, usuarios, enemigos del juego).
  • ¿Hay que DECIDIR la variante al construir? → una factory al frente, aunque por dentro use clases y new. Se combinan de maravilla.

Nota honesta: verás el nombre pomposo "Factory Method" con diagramas UML y jerarquías en libros de Java. En JavaScript, el 95% de las veces es lo de hoy: una función que fabrica. No dejes que el vocabulario te intimide — el mecanismo ya lo dominabas.

Tu app crea notificaciones en 14 archivos distintos con: nueva Alerta o nuevo Aviso según el nivel de urgencia (if repetido en los 14). Llega el tipo 'Crítica'. ¿Qué te habría ahorrado el dolor?

Mini-reto

Fabrica con decisión: una factory crearMovimiento(datos) que devuelva un ingreso si datos.valor > 0 o un gasto si es negativo (cada variante con su resumen() — flecha ▲/▼ como en el módulo 11 — y el gasto guardando el valor en positivo). Aliméntala con un array mixto vía map, imprime los resúmenes, y remata: agrega la variante "ajuste" (valor 0) tocando SOLO la fábrica.

Qué sigue

Singleton para lo único, factory para lo variado. La próxima lección es LA joya del módulo (y del blueprint): el patrón OBSERVER — construir desde cero el sistema de suscripciones que está debajo de RxJS, de los signals de Angular y de medio ecosistema. El altavoz del colegio del módulo 8… ahora fabricado por ti, sin necesitar el DOM.