El patrón Singleton es uno de los patrones de diseño más conocidos en Java y en la programación orientada a objetos en general.
Size: 143.13 KB
Language: es
Added: Sep 21, 2024
Slides: 12 pages
Slide Content
Patrón Singleton
PROGRAMACIÓN ORIENTADA A OBJETOS
Patrón Singleton
El patrón Singleton es uno de los patrones de
diseño más conocidos en Java y en la programación
orientada a objetos en general. Se utiliza cuando se
necesita asegurar que una clase tenga una única
instancia a lo largo de la vida de la aplicación y que
esta instancia esté accesible globalmente.
Introducción al Patrón Singleton
Definición: El patrón Singleton garantiza que una
clase solo tenga una única instancia y proporciona
un punto de acceso global a dicha instancia.
Ejemplo de uso: Acceso a una única conexión a
base de datos, configuración global de una
aplicación, gestión de recursos compartidos, etc.
Características del Patrón Singleton
Unicidad: Solo una instancia de la clase.
Acceso controlado: A través de un método estático
o una propiedad estática.
Global: La instancia es accesible desde cualquier
parte del programa.
Implementación Básica de Singleton en Java
public class Singleton {
// Instancia única de la clase.
private static Singleton instancia;
// Constructor privado para evitar la instanciación externa.
private Singleton() {}
// Método estático para obtener la única instancia.
public static Singleton getInstancia() {
if (instancia == null) {
instancia = new Singleton();
}
return instancia;
}
}
Implementación Básica de Singleton en Java
•Explicación:
•private static Singleton instancia: La única instancia de la
clase.
•private Singleton(): Constructor privado para evitar la
creación de nuevas instancias.
•getInstancia(): Método que controla el acceso a la
instancia única.
Variaciones del Patrón Singleton
•Singleton con inicialización temprana (Eager
Initialization):
public class Singleton {
private static final Singleton instancia = new Singleton();
private Singleton() {}
public static Singleton getInstancia() {
return instancia;
}
}
Variaciones del Patrón Singleton
•Singleton con doble verificación (Double-Checked Locking):
public class Singleton {
private static volatile Singleton instancia;
private Singleton() {}
public static Singleton getInstancia() {
if (instancia == null) {
synchronized (Singleton.class) {
if (instancia == null) {
instancia = new Singleton();
}
}
}
return instancia;
}
}
Ventajas del Patrón Singleton
•Control de acceso único: Asegura que solo haya una
instancia de la clase.
•Optimización de recursos: Evita la sobrecarga de
instanciar objetos innecesarios.
•Facilita la implementación de estados globales.
Desventajas y Consideraciones
•Dificultad en pruebas unitarias: Puede complicar las
pruebas, ya que es difícil simular diferentes estados del
Singleton.
•Problemas de concurrencia: Si no se implementa
correctamente, puede haber problemas en aplicaciones
multihilo.
•Acoplamiento: Puede aumentar el acoplamiento entre
clases si se abusa del Singleton.
Ejemplos de Uso Común
•Gestión de configuración: Una clase que maneje la
configuración de la aplicación.
•Registro de logs: Una clase Singleton que gestione los
registros de la aplicación
Conclusiones
•El patrón Singleton es útil cuando se necesita un control
estricto sobre la creación de instancias de una clase.
•Es fundamental implementar correctamente el patrón
para evitar problemas de concurrencia y acoplamiento.