16 de julio de 2014

     Se asegura de que una clase determinada sólo tenga una única instancia y proporcione un punto de acceso a dicha instancia.


Aplicabilidad:
  • Debe existir una única instancia de una clase, y ésta debe ser accesible a los clientes desde un punto de acceso bien conocido.
  • La única instancia puede ser extendida (subclase), y los clientes deberían poder usar la instancia extendida sin modificar su código.

Estructura:
En la siguiente imagen podemos ver un diagrama UML de este patrón:



Participantes:
  • Singleton: Define un método de clase que permite a los clientes acceder a la instancia única y normalmente también es la responsable de crear su única instancia. 

Colaboraciones:
      Los clientes acceden a la instancia del Singleton a través de la operación definida a tal fin (instancia()).


Concecuencias:
  • Acceso controlado a la instancia única.
  • Reduce el espacio de nombres al evitar variables globales.
  • Permite el refinamiento de operaciones y representación mediante el uso de herencia. En este caso, en lugar de tener una única instancia de ella misma tiene una instancia única de una subclase, y esta usa la instancia de la subclase con la interface de la superclase.
  • Permite un número variable de instancias.
  • Más flexible que las operaciones de clase.

Implmentación
  • Acceso controlado a la instancia única.
  • Asegurar la unicidad de la instancia de la clase.
  • Extender la clase Instancia Única o Singleton:
  • El método de clase instancia conoce las subclases de la jerarquía y crea la instancia deseada. 
  • Establecer algún mecanismo para registrar las subclases.

Patrones relacionados:
  • Abstract Factory, Builder, Prototype: Única instancia de cualquiera de estos objetos o patrones

      Subscribe to RSS Feed Follow me on Twitter!