SINGLETON | PATRONES de DISEÑO
Patrón Singleton: ¿Qué es y para qué sirve?
Introducción al patrón Singleton
- Este vídeo está patrocinado por App Cloud, que ofrece servidores con almacenamiento más rápido que cualquier SSD. Se menciona un código promocional para obtener créditos.
- En este canal se discuten patrones de diseño en software y tecnología, comenzando con el patrón singleton, uno de los más buscados y controvertidos.
- El enfoque del vídeo es técnico; no se discutirá si el singleton es un patrón o un anti-patrón.
Objetivo del Patrón Singleton
- El objetivo principal del patrón singleton es asegurar que solo exista una instancia de una clase específica en todo el programa.
- Se busca evitar la creación de múltiples instancias de la misma clase, garantizando que siempre se utilice la misma instancia.
Accesibilidad Global y Casos de Uso
- El singleton proporciona accesibilidad global a su única instancia, permitiendo acceso desde cualquier parte del programa.
- Aunque hay pocos casos donde realmente se recomienda usar este patrón, uno común es gestionar recursos únicos como archivos de logs.
Implementación Técnica del Patrón Singleton
- Para implementar el singleton, se hace privado el constructor de la clase, evitando así instanciaciones externas.
- La creación de instancias se maneja a través de una función estática (como
getInstance), que controla si ya existe una instancia antes de crearla.
Comprobación y Control sobre Instancias
- La función estática comprueba si ya existe una instancia; si no existe, crea una nueva. Esto asegura que solo haya una instancia activa en todo momento.
¿Qué es el patrón Singleton y cuáles son sus implicaciones?
Conceptos básicos del Singleton
- El patrón Singleton se utiliza para garantizar que una clase tenga una única instancia y proporciona un punto de acceso global a esa instancia. La clase debe ser estática para mantener esta instancia.
- En la función
getInstance, se verifica si la instancia ya existe; si no, se crea. Esto asegura que siempre haya una única copia del objeto.
- El patrón encapsula el proceso de creación de instancias en una función global, eliminando la posibilidad de crear múltiples objetos mediante el constructor de la clase.
Controversias y desventajas del uso del Singleton
- Aunque el Singleton puede parecer útil, genera controversia porque actúa como una variable global dentro de una clase, lo cual es generalmente desaconsejado en programación.
- Se menciona una charla sobre "estado global y singletons" donde se discuten los peligros asociados con este patrón, incluyendo su impacto negativo en las pruebas unitarias.
Impacto en las pruebas unitarias
- Utilizar el patrón Singleton complica innecesariamente las pruebas unitarias, ya que siempre devuelve la misma instancia. Esto dificulta controlar las instancias generadas durante las pruebas.
- A menudo se requieren soluciones poco elegantes para obtener instancias manipuladas necesarias para realizar pruebas efectivas, lo que podría evitarse sin usar este patrón.
Reflexiones finales sobre el uso del Singleton
- Se invita a los espectadores a reflexionar sobre si consideran que el Singleton es un antipatrón y a compartir sus experiencias y opiniones al respecto en los comentarios.