Patrones de Diseño
Los patrones de diseño, son soluciones reutilizables para problemas comunes que enfrentan los desarrolladores durante el diseño de sistemas de software. Ayudan a estructurar el código de manera eficiente y escalable, proporcionando guías para resolver problemas específicos dentro de cierto contexto. Entre los patrones más conocidos en .NET se encuentran patrones como Fachada, que organiza componentes o el Singleton, que se aplica directamente a una clase para el control de instancias, entre otros.
Estos patrones, generalmente se clasifican en tres tipos principales:
- Patrones creacionales
- Patrones Estructurales
- Patrones de Comportamiento
¿Qué es el Patrón Singleton?
Cómo implementar el patrón Singleton en C#
La implementación del patrón Singleton en C# implica realizar tres modificaciones clave en la clase:
1. Almacenar las instancias de la clase
Se crea un atributo privado y estático para almacenar la instancia de la clase. Si es un Singleton puro, este atributo almacena una única instancia; si es un Singleton "variado", puede almacenar un conjunto de instancias.
private static MiClase _instancia;
- static: porque la que guarda la instancia es la propia clase y se comparte a nivel de la misma.
- private: porque solo la clase debe tener control sobre la instancia.
private MiClase() { }
public static MiClase _instancia
{
get
{
if(_instancia == null)
{
_instancia = new MiClase();
}
// retorno la instancia
return _instencia;
}
}
private class MiClase
{
// Atributo privado/estático
private static MiClase _instancia;
// Constructor privado
private MiClase() { }
// Propiedad estática para acceder a la instancia
public static MiClase _instancia
{
get
{
if(_instancia == null)
{
_instancia = new MiClase();
}
// retorno la instancia
return _instencia;
}
}
}
Ventajas del Patrón Singleton
- Control de instancias: Garantiza que solo haya una instancia (o un conjunto limitado) de la clase.
- Acceso global: Proporciona un único punto de acceso a la instancia.
- Optimización de recursos: Especialmente útil en clases que requieren configuraciones costosas o acceso exclusivo a recursos como memoria.
¿Cuándo usar el Patrón Singleton?
- Cuando una clase debe coordinar recursos o servicios compartidos, como un administrador de configuración o conexión a base de datos.
- Cuando una única instancia debe mantener el estado en toda la aplicación, como un registro de logs.