Introducción
Singleton es uno de los patrones de diseño más simples. Es útil cuando necesitamos tener una única instancia de una clase, el ejemplo más común una única conexión a base de datos.
Definición
Singleton es un patrón de diseño que restringe la instanciación de una clase para un objeto.
La siguiente clase tiene una variable privada de tipo objeto de la clase singleton, está variable tiene el propósito de ser la instancia de su misma clase.
Se declara el constructor de la clase privado, esto cumple el propósito que únicamente la misma clase podrá instanciar objetos de su misma clase.
El método getInstance() se declara public y static que nos permitirá invocar el método sin que exista previamente la instancia, este método contiene un if donde se creará una instancia de Singleton siempre que no sea null. Regresa un objeto (instancia) de tipo Singleton.
public class Singleton {
//variable private of singleton
private static Singleton instance;
//constructor private
private Singleton() {}
//method get for get instance Singleton
public static synchronized Singleton getInstance() {
if(instance!=null) {
instance = new Singleton();
}
return instance;
}
}
Realizamos un test para comprobar que realmente el objeto que se obtiene con el método getInstance() siempre sera el mismo.
@Test
public void test() {
Singleton singleton = Singleton.getInstance();
Singleton singleton2 = Singleton.getInstance();
System.out.println("Instancia 1: "+ System.identityHashCode(singleton));
System.out.println("Instancia 2: "+ System.identityHashCode(singleton2));
assertEquals(singleton, singleton2);
}
Como conclusión, el patrón de diseño singleton podemos implementarlo cuando queremos tener únicamente una instancia de una clase.
Deja un comentario