jueves, 6 de diciembre de 2012

Patrón de diseño Singleton

Es un patrón de tipo creacional muy sencillo de implementar. Su misión es asegurar que sólo se pueda crear una o un número definido de instancias de una clase, además de ofrece un punto de acceso global a ella.

Un ejemplo podría ser un reproductor de vídeo. Normalmente los reproductores de vídeo como VLC o Windows Media sólo permiten ver un vídeo a la vez (no es un buen ejemplo ya que en este caso se hablaría de uno o varios procesos, no sólo de objetos).



Cuando definimos un atributo de tipo static, el valor de éste es compartido por todos los objetos que creamos a partir de esa clase.

Detalles de implementación:

  • La clase Singleton controla el acceso a la instancia única.
  • El patrón Singleton es una alternativa a las variables globales.
  • Permite que la clase de la que se crea una única instancia tenga subclases y trabajar con ellas.
  • Permite tener un número variable de instancias.
  • Ofrece más flexibilidad que los métodos (estáticos) de clase.

public class Singleton { 
     private static Singleton instance = null;
 
     private Singleton() { 
          // este método se define privado para evitar 
          // la creación de la clase con new 
     }

     public static Singleton Instance () { 
          // lazy instantiation 
          if (instance==null) 
               instance = new Singleton(); 
          return instance; 
     } 
}

// código cliente 
Singleton miSingleton = Singleton.Instance(); 
Singleton tuSingleton = Singleton.Instance();




-F.A.Q (preguntas que hay que hacerse cuando se implementa un singleton)

  • ¿Qué visibilidad debe tener el constructor de la clase singleton?. Utilizando private evitamos que la clase singleton pueda ser instanciada.

No hay comentarios:

Publicar un comentario