Está en la página 1de 3

El Patrn de Diseo Singleton (en espaol, Instancia nica) se utiliza para garantizar que una clase slo tenga

una nica instancia y para facilitar un punto de acceso global a la misma. Se utiliza cuando se necesita :
y y y

que sea un nico objeto el que coordine acciones a lo largo de todo el sistema que el objeto posea estado variables globales en el sistema (es ms limpio y eficiente utilizar Singleton)

La propia clase es nica responsable de crear la nica instancia (ocultando al constructor) y de facilitar el acceso global a la instancia. Un ejemplo de implementacin en Java :
public class Singleton { //Instancia como variable esttica private static Singleton instanciaUnica; //Constructor privado : no se puede acceder desde fuera private Singleton() {} //Mtodo para obetener una instancia public static Singleton getInstancia() { synchronized(Singleton.class) { if (instanciaUnica == null) { instanciaUnica = new Singleton(); } } return instanciaUnica; } }

Es delicado en sistemas multihilo, ya que si dos hilos de ejecucin intentarn crear una instancia al mismo tiempo y sta no existiese todava, slo uno de los dos debera de lograrlo. La solucin clsica para este problema es utilizar exclusin mutua en el mtodo de creacin de la clase que implementa el patrn.

En algunas ocasiones se aplica este patrn de una forma menos restrictiva, permitiendo que exista un nmero mximo de instancias en lugar de una nica El Patrn de Diseo Singleton (en espaol, Instancia nica) se utiliza para garantizar que una clase slo tenga una nica instancia y para facilitar un punto de acceso global a la misma. Se utiliza cuando se necesita :
y y y

que sea un nico objeto el que coordine acciones a lo largo de todo el sistema que el objeto posea estado variables globales en el sistema (es ms limpio y eficiente utilizar Singleton)

La propia clase es nica responsable de crear la nica instancia (ocultando al constructor) y de facilitar el acceso global a la instancia. Un ejemplo de implementacin en Java :
public class Singleton { //Instancia como variable esttica private static Singleton instanciaUnica; //Constructor privado : no se puede acceder desde fuera private Singleton() {} //Mtodo para obetener una instancia public static Singleton getInstancia() { synchronized(Singleton.class) { if (instanciaUnica == null) { instanciaUnica = new Singleton(); } } return instanciaUnica; } }

Es delicado en sistemas multihilo, ya que si dos hilos de ejecucin intentarn crear una instancia al mismo tiempo y sta no existiese todava, slo uno de los dos debera de

lograrlo. La solucin clsica para este problema es utilizar exclusin mutua en el mtodo de creacin de la clase que implementa el patrn. En algunas ocasiones se aplica este patrn de una forma menos restrictiva, permitiendo que exista un nmero mximo de instancias en lugar de una nica