ho scoperto che in C# è possibile implementare una classe Singleton, come segue:implementazione Singleton classe ereditabile in C#
class Singleton
{
private static Singleton _instance;
public static Singleton Instance
{
get { return _instance ?? (_instance = new Singleton()); }
}
protected Singleton() { }
}
che lavora per le istanze di tipo Singleton
, vale a dire:
var a = Singleton.Instance;
var b = Singleton.Instance;
Console.WriteLine(ReferenceEquals(a, b)); //Prints True.
Ma cosa se voglio che le classi derivate di Singleton anche seguire il pattern Singleton, vale a dire:
class A:Singleton
{ ... }
A a = A.Instance;
In questo caso l'elemento statico Instance
è accessibile dalla classe Singleton
e crea un'istanza Singleton
, che non è l'obiettivo. Inoltre, ci sono due problemi principali con questa soluzione:
- La classe derivata può implementare un proprio costruttore e slacciare il pattern Singleton.
- Se v'è un altro esempio di
Singleton
allora la classe derivata sta per riferimento che meno di derivazione esempio
La mia domanda è: C'è un altro modo per implementare una classe Singleton in C# in modo che classe derivata sono anche singleton?
domanda interessante, suggerisco di dare una lettura: http://msmvps.com/blogs/jon_skeet/archive/2006/01/20/singleton-inheritance.aspx –