Singleton Code Snippet

Singleton es uno de los patrones más conocidos y utilizados en el diseño de arquitecturas de software. Aplicando este patrón a una clase, se evita que dicha clase pueda ser instanciada más de una vez durante el ciclo de vida de la aplicación.
¿Y por qué queremos que una clase solo se pueda instanciar una vez? pues por ejemplo para objetos de tipo controlador que gestionen las conexiones a la BD. En general son objetos a los que se necesita acceder desde cualquier punto de la aplicación y que se debe evitar estar construyendo constantemente.
En la wikipedia se detalla muy claramente su uso e implementación, además en la red hay cantidad de información no solo sobre este patrón, sinó sobre cualquiera que pueda resultar útil.

Para crear una clase que sea Singleton debemos realizar varias implementaciones:

  • El constructor debe ser privado.
  • La clase debe publicar una propiedad statica que devuelva la instancia de dicha clase.
  • Esta propiedad consultará internamente si existe una instancia de la clase. Si existe, devuelve dicha instancia. De lo contrario, la construye previamente y la devuelve.

Como el constructor es privado, solo podemos acceder a la clase a través de la propiedad pública. Dicha propiedad será la encargada de crear la única instancia posible de la clase en caso de que no exista.

Y aprovechando esta serie de artículos (code snippet, code snippet II) dedicada a los Code Snippets, podemos ver como este es un clásico ejemplo de aumento de productividad utilizando y creando nuestros Code Snippets.
Es muy probable que en diferentes aplicaciones debamos crear classes de tipo Singleton, incluso varias dentro del mismo proyecto. Si disponemos de un code Snippet que genere automaticamente la clase singleton podemos ahorrarnos mucho tiempo.
Así que aquí lo ofrezco para descargar y poder utilizar libremente en proyectos C#.

Saludos!

Published viernes, 30 de octubre de 2009 8:51 por Dani PuntosNET
Archivado en: ,

Deja tu comentario

(requerido) 
(requerido) 
(opcional)
(requerido) 
Ofrecido por Community Server (Non-Commercial Edition)