Singleton
Implementación manual de Singleton segura para múltiples hilos sin usar Lazy<T>.
#Cuándo usarla
Cuando necesitas control fino sobre la inicialización (por ejemplo, parámetros que solo se conocen en runtime) y Lazy<T> no encaja.
#Ejemplo en C#
public sealed class Cache
{
private static Cache? _instance;
private static readonly object _gate = new();
public static Cache Instance
{
get
{
if (_instance is null)
{
lock (_gate)
{
_instance ??= new Cache();
}
}
return _instance;
}
}
private Cache() { /* costosa inicialización */ }
}Cuándo NO aplicarlo
Si no necesitas inicialización condicional, prefiere Lazy<T> — es más legible y igual de seguro.
#creational #threading #lock