Вы находитесь на странице: 1из 2

Para implementar el patrn singleton hay que crear un mtodo que instancie al objeto slo si todava no existe ninguna

otra instancia. Para asegurar que no vuelva a ser instanciado, se limita al constructor con atributos protegidos o privados. Por esto, la implementacin del patrn puede ser complicada en programas multihilo, ya que si dos o ms hilos de ejecucin instanciaran la clase al mismo tiempo slo uno de ellos debera 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. Ejemplos de situaciones habituales en las que convendra aplicar este ejemplo de patrn de diseo son aquellas en las que la clase principal busca controlar el acceso a un recurso 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.

Clasificacin: Creacional. Propsito: Se asegura de que una determinada clase slo tiene una instancia y proporciona un punto de acceso a dicha instancia. Motivacin: o Existen mltiples ejemplos en donde slo se requiere tener una instancia de una clase, por ejemplo en el caso del patrn anterior slo necesistaremos una instancia del gestor de prototipos, o si tenemos muchas impresoras en general slo necesitaremos un nico gestor de impresin, muchas conexiones pero un nico gestor de conexin etc. o Problema: Nos interesa facilitar el acceso a ese objeto y que ese objeto sea nico, es decir exista una sola instancia de un determinado tipo de clase. o Solucin 1: Mantener una variable global para facilitar el acceso. De este modo no resolvemos el problema porque siempre podemos instanciar mltiples objetos en variables locales aunque si es cierto que es de fcil acceso. o Solucin 2: Hacer responsable a la propia clase de la instancia nica: Restringiendo el acceso al constructor de modo que una vez creada una instancia ya no se puedan crear ms. Proporcionando un mecanismo para acceder a la instancia si esta ya ha sido creada y sino que la cree en ese momento. Aplicabilidad: o Debe existir una nica instancia de una clase, y sta debe ser accesible a los clientes desde un punto de acceso bien conocido. o La nica instancia puede ser extendida (subclase), y los clientes deberan poder usar la instancia extendida sin modificar su cdigo. Estructura: Participantes: o Instancia nica o Singleton: Define un mtodo de clase que permite a los clientes acceder a la instancia nica y normalmente tambin es la

responsable de crear su nica instancia. Colaboraciones entre participantes: Los clientes acceden a la instancia del Singleton a travs de la operacin definida a tal fin (instance()). Consecuencias: o Acceso controlado a la instancia nica. o Reduce el espacio de nombres al evitar variables globales. o Permite el refinamiento de operaciones y representacin mediante el uso de herencia. En este caso en lugar de tener una nica instancia nica de ella misma tiene una instancia nica de una subclase. En este caso se usa la instancia de la subclase con la interfaz de la superclase. o Permite un nmero variable de instancias. Ms flexible que las operaciones de clase. Implementacin: o Asegurar la unicidad de la instancia de la clase. o Extender la clase InstanciaUnica o Singleton: El mtodo de clase instacia conoce las subclases de la jerarqua y crea la instancia deseada. Establecer algn mecanismo para registrar las subclases En Java: Declarar el constructor como privado y adems establecer un atributo como privado para almacenar la instancia. Para inicializar el atributo privado emplear un bloque esttico. Establecer un mtodo pblico que proporcione la instancia correspondiente al atributo privado de la clase.

Вам также может понравиться