El Singleton es quizás el más sencillo de los patrones que se presentan en el catálogo del GoF (disponible en el libro Patrones de Diseño [GoF95] y analizado previamente en "Patrones y Antipatrones: una introducción" [Welicki05]). Es también uno de los patrones más conocidos y utilizados. Su propósito es asegurar que sólo exista una instancia de una clase.
En
este artículo analizaremos en profundidad este patrón, exponiendo sus
fortalezas y debilidades. Presentaremos distintas opciones de implementación en
C#, haciendo hincapié en su correcto funcionamiento en entornos multihilos.
Luego relacionaremos los conceptos de este artículo con los patrones de
fabricación que hemos estudiado en la entrega anterior. Finalmente, mostraremos
un ejemplo de implementación de este patrón para crear una caché de parámetros
de configuración. Restringe la instanciación de una clase o valor de un tipo a
un solo objeto.
Ejemplos de Patrón de
diseño Singleton.
Ejemplo 1 - Implementación del GoF
public class Singleton
{
private static Singleton instance = null;
private Singleton() {}
public static Singleton GetInstance()
{
if (instance == null)
instance = new Singleton();
return instance;
}
}
|
Ejemplo 2 - Modificación del Ejemplo del GoF usando Propiedades
public sealed class Singleton
{
private static volatile Singleton instance;
private static object syncRoot = new Object();
private Singleton()
{
System.Windows.Forms.MessageBox.Show("Nuevo Singleton");
}
public static Singleton GetInstance
{
get
{
if (instance == null)
{
lock(syncRoot)
{
if (instance == null)
instance = new Singleton();
}
}
return
instance;
}
}
}
|
0 comentarios :
Publicar un comentario