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 nicoobjeto. Su intencin consiste en garantizar que una clase slo tenga una instancia y proporcionar un punto de acceso global a ella. 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 ejecucinintentan 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. 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 o un archivo abierto en modo exclusivo) o cuando cierto tipo de datos debe estar disponible para todos los dems objetos de la aplicacin. El patrn singleton provee una nica instancia global gracias a que:
La propia clase es responsable de crear la nica instancia.
Permite el acceso global a dicha instancia mediante un mtodo de clase. Declara el constructor de clase como privado para que no sea instanciable directamente.