I singleton sono soluzioni completamente appropriate per alcuni problemi di progettazione. Tuttavia, come viene implementato il singleton qui.
Come esempio in C #,
public class MySingleton
{
static MySingleton()
{
Instance = new MySingleton();
}
protected MySingleton()
{
}
public MySingleton Instance
{
get;
protected set;
}
// Put public instance members and properties here.
}
Sarebbe un esempio di un singleton che non dovrebbe mai essere distrutto. È possibile avere un campo statico interno per memorizzare il riferimento al singleton e fare un'istanza lazy se il valore interno è null. Ma devi preoccuparti di garantire l'accesso singlet per testare null, potenzialmente creare e quindi ottenere l'istanza singleton, solo così potresti liberare la memoria da questo oggetto ad un certo punto.
È davvero una cattiva pratica creare singoletti dichiarando statica la classe. Rende impossibile la distruzione dell'oggetto, oltre a renderlo un incubo per deridere l'interfaccia nei test di unità.