Patrones en java

Singleton

         public class Singleton {

private static final Singleton INSTANCIA = new Singleton();
private Singleton(){}
public static Singleton obtenerInstancia(){
return Singleton.INSTANCIA;
}
public void saludar(){
System.out.println("Hola Mundo");
}

}

     public class Main {

public static void main(String[] args) {

Singleton oSingleton = Singleton.obtenerInstancia();
oSingleton.saludar();

}

}






         import java.util.Date;


//la clase hereda de hilos
public class Reloj extends Thread{
private static Reloj reloj;
private Reloj(){} // es privado porque usa el patron singleton
//para cuando no usas el singleton
// public Reloj(){
// this.start();
// }
//inicializa una sola vez el reloj
private synchronized static void createInstance(){
if(reloj==null){
reloj=new Reloj();
reloj.start();//arranco el hilo
}
}
//obtinene la unica instancia
public static Reloj getInstancia(){
createInstance();
return reloj;
}
@Override
public void run(){
while(true){
Date hora = new Date(System.currentTimeMillis());
System.out.println(hora);
try{
sleep(1000);
}catch (InterruptedException e){
e.printStackTrace();
}
}
}
}

public class Main {

public static void main(String[] args) {
//crea tres relojes usando el patron singleton
Reloj r1 = Reloj.getInstancia();
// Reloj r2 = Reloj.getInstancia(); //en realidad solo se crea una instancia, ya que solo usa una, da igual cuantas hagas
// Reloj r3 = Reloj.getInstancia(); //se esperan una a otra
//tres relojes sin usar el patron singleton
// Reloj r4 = new Reloj(); //sale bien si creas un reloj
// Reloj r5 = new Reloj(); //sale tres veces cada hora, no es como en el que usas en singleton
// Reloj r6 = new Reloj();
//la diferencia esque con el singleton da igual los que hagas que solo hace uno y en el otro no
}





Descargar