¿Cuál es la principal crítica al patrón Singleton?
Opciones
- Usa demasiada memoria para el único objeto que guarda
- Añade estado global oculto, lo que dificulta los tests y el paralelismo (Opción correcta)
- No se puede implementar en algunos lenguajes, como Python
- Siempre es más lento que una clase normal
Respuesta
Introduce estado global oculto y dificulta los tests y el paralelismo
Por qué
Un Singleton garantiza que solo existe una instancia de una clase y deja que cualquiera la tome desde cualquier sitio.
Eso es básicamente una variable global: el código depende de ella en silencio, los tests comparten su estado y se interfieren, y es difícil de reemplazar por un fake.
Prefiere crear una instancia al arrancar y pasársela a quien la necesite (dependency injection).
Recuerda
Singleton = estado global disfrazado. Mejor inyectar la instancia.