// // // // // // //

miércoles, 17 de diciembre de 2014

Patrón Singleton


    El objetivo del patrón Singleton es asegurarse de que solo existe una única instancia de un objeto para todo el programa. Esto se consigue con tres cosas: un constructor privado, un campo de la clase estático para almacenar la única instancia y un método estático para obtenerla y, si no existe, crearla.

    Para realizar un ejemplo práctico usaremos la Gestora del post anterior de Construye tu programa:
public class GestoraEmpleados extends ArrayList<Empleado>{
  
    public GestoraEmpleados() {
    }

    public GestoraEmpleados(ArrayList<Empleado> datosIniciales) {       
        super(datosIniciales);
    }     
} 
    Hagamos los cambios propuestos:
public class GestoraEmpleados extends ArrayList<Empleado>{
  
    private static GestoraEmpleados unicaGestora;
  
    public static GestoraEmpleados dameGestora(){
      
        if(unicaGestora == null)
            unicaGestora = new GestoraEmpleados();
      
        return unicaGestora;
    }
  
    private GestoraEmpleados() {
    }   
}
    La razón del constructor privado es simplemente para que ninguna otra clase pueda instanciar la Gestora, usamos un campo y un método para que solo haya un campo y podamos recuperarlo. En el método comprobamos si existe ya la Gestora o no y, si no existe, crearla.

    Para usarla, nos vale con esto:

GestoraEmpleados gestora = GestoraEmpleados.dameGestora();

    Como sabéis es una ArrayList asi que si queremos acceder a sus métodos vale con:
gestora.add(Empleado e);
gestora.remove(Empleado e);
    O lo que quieras hacer. Si, por el contrario, solo vamos a hacer una operación, no deberíamos guardarla en una variable si no llamarla directamente, por que, si no, la referencia de la variable quedará guardada en el Stack hasta que se acabe el método (si es variable local) :
GestoraEmpleados.dameGestora().add(Empleado e);
    Hacer esto simplifica bastante el uso de la Gestora, pues no necesitamos pasar referencias de ningún tipo y cualquier clase puede acceder rápidamente a la información. Seguiremos con  Construye tu programa, con esta segunda Gestora, en: http://morethansimplycode.blogspot.com.es/2014/12/construyendo-tu-programa-iii.html.

No hay comentarios:

Publicar un comentario