Skip to main content

Inicia sesión en CleanKata

Sigue tu progreso, gana XP y desbloquea todas las lecciones.

Al iniciar sesión aceptas nuestros Términos de uso y Política de privacidad.

Patrones de Diseño70 XP6 min

Singleton: La Instancia Única

Asegura que una clase tenga solo una instancia y proporciona un punto de acceso global — pero el abuso crea estado global oculto y dificulta las pruebas.

Por qué importa

Singleton es uno de los patrones más mal utilizados. Cuándo funciona: un gestor de configuración, logger, o pool de conexiones — genuinamente se necesita una instancia compartida. La trampa es usar Singleton como atajo para el estado global. La instancia se convierte en un acoplamiento invisible: cada clase que llama a getInstance() está secretamente acoplada a la clase concreta, y las pruebas no pueden sustituir un doble sin monkey-patching.

Seguridad en hilos y módulos Python

En Python, los módulos son singletons por defecto — importar el mismo módulo dos veces devuelve el mismo objeto. Una instancia a nivel de módulo es el enfoque idiomático. En TypeScript, los módulos ES se comportan igual. Antes de usar una clase Singleton, pregúntate si una constante a nivel de módulo ya resuelve el problema.

💡Conclusión clave

Si tu Singleton hace que las pruebas unitarias requieran infraestructura real, se ha convertido en un antipatrón — inyecta la dependencia para que los llamadores y las pruebas puedan suministrar lo que necesitan.

🔧 Algunos ejercicios pueden tener errores. Si algo parece incorrecto, usa el botón Feedback (abajo a la derecha) para reportarlo — nos ayuda a corregirlo rápido.

Pista: Si tu Singleton hace que las pruebas unitarias requieran una base de datos real, se ha convertido en un antipatrón. Inyecta la dependencia en su lugar.

✗ Tu versión