sábado, 19 de enero de 2013

Ejemplo de patrón de diseño Singleton



Los patrones de diseño son una forma de escribir código de manera más ordenada.

¿Para qué sirve el patrón Singleton?
Crear una instancia única de una clase.  Se me ocurre que necesito obtener una lista de registros de una base de datos.

Singleton en la vida real
Las clases java.langMath y java.lang.Runtime de Java son un ejemplo del patrón Singleton.


Ejemplo. Definir una clase que siga este patrón y muestre su nombre.

Singleton.java


public class Singleton{
private static Singleton singleton=null;

private Singleton(){}

public static Singleton getSingleton(){
if(singleton==null){
singleton=new Singleton();
}
return singleton;
}
//aqui muestra el nombre 'Singleton'
public void ver(){
System.out.println("Estoy desde la clase: "+this.getClass().getName());
}
}

Ahora la clase principal:

Principal.java

public class Principal{
public static void main(String[] args) {
Singleton singleton=Singleton.getSingleton();
singleton.ver();
}
}
--Editado
Aquí otro ejemplo del uso del patrón singleton, obtener los valores de una lista:
import java.util.List;
import java.util.ArrayList;

public class Codemonkey{
  public static void main(String[] args) {
    List<Integer> lista =new ArrayList<Integer>();
    lista.add(12);
    lista.add(3);
    lista.add(90);
    lista.add(32);
    lista.add(8);

    Singleton ejemplo=Singleton.getSingleton();
    ejemplo.getLista(lista);
  }
}

class Singleton{
  private static Singleton singleton=null;
  private Singleton(){}

  public static Singleton getSingleton(){
    if(singleton==null){
      singleton=new  Singleton();
    }
    return singleton;
  }

  public void getLista(List<Integer> lista){
    for(int l: lista){
      System.out.println(l);
    }
  }

}