¿Qué es un singleton?
En programación orientada a objetos, un singleton es un patrón de diseño que garantiza que una clase tenga una única instancia en todo el sistema y proporciona un punto de acceso global a esa instancia. En otras palabras, solo puede existir un objeto de esa clase en cualquier momento.

¿Por qué utilizar un singleton?
- Control de acceso: Limita la creación de objetos a uno solo, evitando la creación de múltiples instancias que podrían generar inconsistencias en el estado de la aplicación.
- Optimización de recursos: En algunos casos, crear un objeto puede ser costoso en términos de recursos. Un singleton asegura que solo se cree una vez, evitando la sobrecarga innecesaria.
- Estado global: Permite compartir un estado entre diferentes partes de una aplicación, ya que todos los componentes accederán a la misma instancia.
¿Cómo se implementa un singleton?
La implementación típica de un singleton en Java implica:
- Constructor privado: Se hace privado para evitar la creación de instancias desde fuera de la clase.
- Atributo estático privado: Se crea un atributo estático de tipo de la propia clase para almacenar la única instancia.
- Método estático público: Se define un método estático (generalmente llamado
getInstance
) que devuelve la instancia. Si la instancia aún no existe, se crea; si ya existe, se devuelve la instancia existente.
En resumen
El patrón singleton es una herramienta útil en ciertas situaciones, pero es importante usarlo con moderación y considerar las alternativas. En muchos casos, la inyección de dependencias es una opción más flexible y testable.
