Jeg bruger af og til et Singleton-pattern i mine applikationer, og jeg kan efterhånden laver skelet koden for til disse Singleton klasser i søvne. Det er alt sammen ok, men nu har vi efterhånden haft generics i 3-4 år. Jeg mener: Jeg bruger klasser med generics hver dag, men hvor ofte laver man klasser der udnytter det selv?
Ikke ret tit vel?
Tilbage til mine applikationer der har brug for en Singleton-konstruktion. Det tog mig 10 minutter, da ideen først havde slået mig:
[code=csharp]public class Singleton
where T : class, new()
{
private static T _instance;
static Singleton()
{
_instance = new T();
}
public static T Instance
{
get
{
return _instance;
}
}
}
[/code]
Og når den skal bruges:
[code=csharp]Singleton.Instance.Append("Ya-di-ya");[/code]
Det var bare mit lille Tip of the Day, her i ferietiden.
Tilføjelse - Tak til Guidmaster der gør opmærksom på threading problematikken. Jeg har planket hans kode, og nu ser klassen således ud:
[code=csharp]public class Singleton where T : class, new()
{
private static T _instance;
private static object ged;
static Singleton()
{
ged = new object();
_instance = new T();
}
public static T Instance
{
get
{
lock (ged)
{
return _instance;
}
}
}
}
[/code]