Patrón de diseño Singleton
Este patrón sirve para controlar que sólo exista un único objeto (y sólo uno) de la clase que nos interese.
Imagina que queremos tener un único objeto Padre. No puede haber más que un sólo padre. Que existieran dos padres sería un error.
Para conseguirlo hay que tener en cuenta estos aspectos:
- Evitar la creación pública del objeto, es decir, declarar el constructor privado para que el mundo no pueda crear indefinidos objetos de este tipo.
- Sólo se debe proporcionar una única forma de obtener el objeto. Implementando un método público que proporcione una única instancia de esta clase.
- No se debe permitir clonar el objeto. Esto se consigue declarando la clase como final.
Ejemplo:
private static Padre s = new Padre(0);
int hijos;
private Padre(int h) {
this.hijos = h;
}
public static Padre getInstance() {
return s;
}
public int getHijos() {
return hijos;
}
public void setHijos(int x) {
i = x;
}
}
He puesto en negrita las claves para implementar el patrón. Declarar la clase como final para evitar clonaciones, crear una instancia static de la clase, declarar el constructor private, y habilitar un único modo de obtener la instancia mediante getInstance.


