Patrón Singleton — Ejemplo Práctico

PUBLICADO: 2026-08-16
AUTOR: MANUEL PRIETO
Patrones de Diseño

El patrón Singleton garantiza una única instancia compartida de una clase en toda la aplicación.

1. El Problema de Partida

getAllMdxFiles recorre recursivamente content/knowledge/ leyendo el filesystem. Durante generateStaticParams, generateMetadata y el render de cada página, Next.js invoca esta función decenas de veces para la misma colección, repitiendo lecturas de disco idénticas en cada build.

2. La Solución Singleton

Una clase MdxCache con constructor privado (simulado) expone getInstance() y memoriza el resultado del recorrido la primera vez; las siguientes llamadas devuelven el array cacheado en memoria.

3. Uso en lib/mdx.js

4. Ventajas

  • Una sola lectura de disco por build: todas las rutas dinámicas comparten el mismo resultado.
  • Punto de acceso global: cualquier módulo llama a MdxCache.getInstance() sin pasar la caché como prop.
  • Cuidado en dev: con Hot Module Reloading el singleton puede persistir contenido obsoleto; conviene invalidarlo (_files = null) ante cambios de archivo en modo desarrollo.