¿Qué es un singleton en C#?
¿Qué es un Singleton y cuándo debo usarlo?
Un singleton es una clase que sólo permite crear una instancia de sí misma y proporciona un acceso sencillo y fácil a dicha instancia. La premisa singleton es un patrón en todo el desarrollo de software.
Hay una implementación de C# "Implementación del patrón Singleton en C#" que cubre la mayor parte de lo que necesita saber, incluidos algunos buenos consejos sobre la seguridad de subprocesos .
Para ser honesto, es muy raro que necesites implementar un singleton; en mi opinión, debería ser una de esas cosas que debes tener en cuenta, incluso si no se usa con demasiada frecuencia.
Pediste C#. Ejemplo trivial:
public class Singleton
{
private Singleton()
{
// Prevent outside instantiation
}
private static readonly Singleton _singleton = new Singleton();
public static Singleton GetSingleton()
{
return _singleton;
}
}
Qué es: una clase para la cual hay solo una instancia persistente durante toda la vida útil de una aplicación. Consulte Patrón Singleton .
Cuándo debes usarlo: Lo menos posible. Sólo cuando esté absolutamente seguro de que lo necesita. Soy reacio a decir "nunca", pero normalmente hay una alternativa mejor, como la inyección de dependencia o simplemente una clase estática.
Otra forma de implementar singleton en C#, personalmente prefiero esta manera porque puedes acceder a la instancia de la clase singeton como una propiedad en lugar de un método.
public class Singleton
{
private static Singleton instance;
private Singleton() { }
public static Singleton Instance
{
get
{
if (instance == null)
instance = new Singleton();
return instance;
}
}
//instance methods
}
pero bueno, hasta donde yo sé, ambas formas se consideran "correctas", por lo que es solo una cuestión de gusto personal.