Singleton
El patrón Singleton es un principio de diseño que restringe la instanciación de una clase a un solo objeto. Es útil cuando se necesita exactamente una instancia para coordinar acciones a lo largo del sistema. Sin embargo, su uso indebido puede considerarse un Code Smell, especialmente si lleva a un acoplamiento innecesario entre componentes o dificulta las pruebas unitarias.
En este ejemplo, la clase Database
garantiza que solo pueda existir una instancia de sí misma. El método Query
simula la ejecución de una consulta SQL.
¿Por qué el Singleton puede ser un Code Smell? 🤔
Contexto Global: Al tener una única instancia accesible globalmente, el Singleton vive en el contexto global, lo que puede llevar a dependencias ocultas entre clases y dificultar el seguimiento de dónde y cómo se utiliza.
Modificación no controlada: Al ser accesible globalmente, cualquier parte del código puede modificar el estado del Singleton, lo que puede llevar a resultados inesperados o difíciles de depurar.
Dificultad para probar: Las pruebas unitarias se complican, ya que el estado del Singleton puede ser modificado por pruebas anteriores, llevando a resultados de pruebas no deterministas. Además, mockear o simular el Singleton para pruebas unitarias puede ser complicado.
Inflexibilidad: El uso del Singleton puede hacer más difícil cambiar la implementación o configuración debido a su naturaleza global y única.
Última actualización