Patrón Singleton
El Patrón Singleton es un patrón de diseño creacional que asegura que una clase tenga una única instancia y proporciona un punto global de acceso a esa instancia.
Este patrón se utiliza cuando es necesario asegurarse de que una clase tenga una sola instancia en toda la aplicación, y además, se necesita proporcionar un acceso global a esa instancia.
¿Cómo funciona?
El patrón Singleton funciona garantizando que una clase tenga solo una instancia a lo largo del ciclo de vida de la aplicación. En lugar de permitir que múltiples instancias sean creadas, el Singleton controla la creación de la instancia y devuelve la misma instancia cada vez que se solicita.
El patrón define un método estático que crea la instancia si no existe y la devuelve. Si ya existe, simplemente se devuelve la instancia ya creada, evitando que se creen múltiples objetos.
Ejemplo de uso
Un ejemplo común de uso del patrón Singleton es en el manejo de configuraciones globales de la aplicación, donde no se necesita tener múltiples instancias de la clase de configuración. De esta manera, se garantiza que la configuración sea coherente en toda la aplicación.
Ventajas
Controla el acceso a la única instancia: Se asegura de que no haya más de una instancia de la clase.
Reduce la sobrecarga de memoria: No se crean múltiples objetos innecesarios.
Proporciona acceso global a la instancia: La misma instancia está disponible a través de toda la aplicación.
Fácil de implementar: Es un patrón relativamente fácil de implementar y usar.
Desventajas
Difícil de probar: Debido a su naturaleza global, puede ser difícil realizar pruebas unitarias en una clase Singleton.
Restricción en la flexibilidad: Puede ser un inconveniente si se desea cambiar la lógica de instanciación en el futuro, ya que esta lógica está encapsulada dentro de la clase Singleton.
Puede ser propenso a ser mal utilizado: Si se usa de forma incorrecta, puede llevar a una mala estructura en el código.
Ejemplo
Aquí tienes un ejemplo de cómo se implementa el patrón Singleton en JavaScript:
Explicación
Clase Singleton: La clase
Singleton
tiene un constructor que verifica si ya existe una instancia. Si ya existe, devuelve esa instancia en lugar de crear una nueva. Si no existe, crea la instancia y la guarda enSingleton.instance
.Instanciación: Cuando se crea una nueva instancia de
Singleton
, si ya existe una instancia previa, se devuelve la misma.Método
getTimestamp
: Este método devuelve un valor (en este caso, un timestamp) que puede ser usado para demostrar que ambas instancias tienen el mismo valor, ya que es la misma instancia en realidad.Verificación de la instancia: Se comprueba que
instance1
yinstance2
sean efectivamente la misma instancia al compararinstance1 === instance2
, lo cual devuelvetrue
.
Conclusión
El patrón Singleton es adecuado cuando se necesita una única instancia de una clase a lo largo de toda la aplicación, como en el caso de gestores de configuración, conexiones a bases de datos o registros de logs.
Es un patrón simple y efectivo, pero debe ser utilizado con cuidado para evitar que se convierta en un obstáculo para las pruebas o el mantenimiento del código.
Última actualización