Patrones Creacionales_Singleton

Singleton

Es quizás uno de los patrones de diseño más sencillos, es también uno de los más conocidos y utilizados. Ofrece una mejora sobre las variables globales. Su propósito es asegurar que sólo exista una instancia de una clase, hace que la clase sea responsable de su única instancia, se le conoce tambien como patrón de instancia unica.

Intención

Garantiza que una clase sólo tenga una instancia y proporciona un punto de acceso global a ésta instancia.

Aplicabilidad

Usar cuando:
  • Deba haber exactamente una instancia de una clase y ésta deba ser accesible a los clientes desde un punto de acceso conocido.
  • La única instancia debería ser extensible mediante herencia y los clientes deberían ser capaces de utilizar una instancia extendida sin modificar su código.
Estructura


Participantes

Singleton
  • Define una operación “instance” que permite a los clientes acceder a la única instancia
  • Puede ser responsable de crear su única instancia.
Colaboraciones

Los clientes acceden a la instancia única a través de la operación “instance”.

El funcionamiento de este patrón es muy sencillo se podría resumir en las siguientes pasos: primero ocultar el constructor de la clase Singleton, para que los clientes no puedan crear instancias, el segundo paso; declarar en la clase Singleton una variable miembro privada que contenga la referencia a la instancia única que queremos gestionar, tercer y ultimo paso proveer en la clase Singleton una función o propiedad que brinde acceso a la única instancia gestionada por el Singleton. Los clientes acceden a la instancia a través de esta función o propiedad.

Estos pasos se cumplen en todas las implementaciones del Singleton, independientemente de los recaudos que deban tomarse para soportar la correcta ejecución en entornos multihilo.


Consecuencias
  • Acceso controlado a la única instancia. Puede tener un control estricto sobre cómo y cuando acceden los clientes a la instancia, por ejemplo para tener un acceso centralizado a un sistema de log o un sistema de caché, de forma que desde cualquier punto de la aplicación en el que queramos utilizar estos recursos, podamos garantizar que accedamos siempre a la misma instancia.
  • Espacio de nombres reducido (no se requieren variables globales).
  • Permite el refinamiento de operaciones y la representación. Se puede crear una subclase de Singleton.
  • Permite un número variable de instancias. El patrón hace que sea fácil cambiar de opinión y permitir más de una instancia de la clase Singleton.
  • Más flexible que las operaciones de clase (métodos estáticos).


No hay comentarios:

Publicar un comentario