sábado, 13 de marzo de 2010

Manejo de Singleton en Java

Para variar y entrar en conceptos más avanzados en Programación Orientada a Objetos, vamos a estudiar el uso de singleton creación y manejo en un prático ejemplo.

1.- Iniciar Netbeans, y ir a la opción de menu File --> New Project. Elegimos en Categories Java y en Projects Seleccionamos Java Application. Hacemos clic en Next.


2.- En Project Name colocamos " Singleton", la opción Create main Class la des chequeamos para que cree una clase principal. hacemos clic en Finish.

3.- Creamos una Clase llamada Singleton, esta clase tendrá la siguiente estructura:

package singleton;

/**
*
* @author carlos
*/
public class Singleton {
private int valor = 5;
// donde se almacenará instancia del singlenton
public static Singleton singleton;
private Singleton() {
}
// método para recuperar singlenton
public static Singleton getSingleton() {
// si la instancia es null crea una
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}

public static void main(String[] args) {
System.out.println("El valor inicial del singlenton es: "+Singleton.getSingleton().getValor());
Singleton.getSingleton().setValor(Singleton.getSingleton().getValor()-2);
System.out.println("El valor inicial del singlenton es: "+Singleton.getSingleton().getValor());
}

/**
* @return the valor
*/
public int getValor() {
return valor;
}

/**
* @param valor the valor to set
*/
public void setValor(int valor) {
this.valor = valor;
}
}

4.- Estudiando el código podemos ver que la clase Singleton tiene una propiedad "valor" esta propiedad la utilizaremos para almacenar un número y cambiar su valor.

Ahora tambien tenemos una propiedad "singleton" que es del tipo static, que almacenará el singleton en sí. EL truco es el siguiente, crear un método "getSingleton" estático que comprobará si la propiedad "valor" es null esto quiere decir que la instancia del singleton no ha sido iniciada, le asignada un valor y devuelve su instancia.

En caso contrario que la instancia del singleton ya ha sido creada, solo la retornará.

Esto se comprueba en el método principal, al imprimir el valor inicial con el primer println podemos apreciar que imprime la variable valor = 5, luego le restamos 2 y el próximo valor es 3.

La salida del programa será como la siguiente:

El valor inicial del singleton es: 5
El valor inicial del singleton es: 3

No hay comentarios: