You are on page 1of 3

Manuel Morales

Singleton
El patrn de diseo singleton (instancia nica) est diseado para
restringir la creacin de objetos pertenecientes a una clase o el valor
de un tipo a un nico objeto.
El patrn singleton se implementa creando en nuestra clase un
mtodo que crea una instancia del objeto slo si todava no existe
alguna. Para asegurar que la clase no puede ser instanciada
nuevamente se regula el alcance del constructor (con atributos como
protegido o privado).
La instrumentacin del patrn puede ser delicada en programas con
mltiples hilos de ejecucin. Si dos hilos de ejecucin intentan crear la
instancia al mismo tiempo y esta no existe todava, slo uno de ellos
debe lograr crear el objeto. La solucin clsica para este problema es
utilizar exclusin mutua en el mtodo de creacin de la clase que
implementa el patrn.
Sus usos ms conocidos son en la Clase java.lang.Runtime,
java.lang.Math, java.util.Collections y en la Clase Environment de
MS.NET

Intencin:
Su intencin consiste en garantizar que una clase slo tenga una
instancia y proporcionar un punto de acceso global a ella.

Motivacin:
Es necesario que se cuente con una sola instancia de una clase, es
decir, que exista una sola instancia de una clase determinada, y que el
sistema no permita que se creen nuevas.

Aplicacin:
Las situaciones ms habituales de aplicacin de este patrn son
aquellas en las que dicha clase controla el acceso a un recurso fsico
nico (como puede ser el ratn, un archivo abierto en modo exclusivo,
una memoria compartida por varios Threads, un Spool, etc.) o cuando
cierto tipo de datos debe estar disponible para todos los dems
objetos de la aplicacin.
Manuel Morales

Estructura UML:


Participantes:
Define una operacin de clase getInstance que permite a los clientes
acceder a su instancia nica y adems es responsable de su creacin.
Colaboracin:
Los clientes acceden a la nica instancia solamente a travs de la
operacin getInstance.

Se suelen emplear estereotipos para simplificar los diagramas de
secuencia y colaboracin.

Consecuencias:
Acceso controlado a la nica instancia. Puede tener un control
estricto sobre cmo y cundo acceden los clientes a la instancia.
Espacio de nombres reducido. El patrn Singleton es una mejora
sobre las variables globales.
Permite el refinamiento de operaciones y la representacin. Se
puede crear una subclase de Singleton.
Permite un nmero variable de instancias. El patrn hace que sea
fcil cambiar de opinin y permitir ms de una instancia de la
clase Singleton.
Ms flexible que las operaciones de clase.

Manuel Morales

Implementacin:
La implementacin consiste en utilizar un mtodo esttico de clase
para recuperar la nica instancia de la clase o crear una instancia si no
exista ninguna.
Cdigo de ejemplo:
public class Singleton{
private static Singleton instanciaUnica = null;
prvate Singleton(){}
public static Singleton getInstance(){
if (instaciaUnica==null){
instanciaUnica=new Singleton();
}//Cierra el if
return instanciaUnica;
}//Cierra instance
}//Fin de la clase Singlenton