Das Singleton Pattern erlaubt es einem Programmierer von einer Klasse genau eine Instanz zu erstellen. Auf die Methoden und Eigenschaften dieser Klasse kann man von überall her zugreifen.
namespace MyApplication
{
class Singleton
{
// instance of Singleton Class
private static Singleton instance;
// constructor set to private!
private Singleton()
{
}
// methode to access this class and all methodes
// within Singleton Class
public static Singleton getInstance()
{
if(instance == null)
instance = new Singleton();
return instance;
}
// a methode that you like to get access to
public void DoSomethingVerySpecific()
{
// Does something very specific
}
}
class SomethingElse
{
public void DoSomething()
{
// calling the methode from anywhere
Singleton.getInstance().DoSomethingVerySpecific();
}
}
}
Was benötigt man nun um eine Klasse als Singleton zu implementieren?
Der Konstruktor wird private gesetzt, sodass man von außen keine Instanz dieser Klasse erstellen kann. Als nächstes benötigt man eine Variable vom Typ der Singletonklasse. Diese wird ebenfalls private und auf static gesetzt.
Wie kommen wir nun an die Methoden und Eigenschaften dieser Klasse?
Wir schreiben eine public Methode getInstance(). Diese Methode prüft, ob die Variable instance schon einmal initialisiert wurde. Wenn nicht, wird die Variable initialisiert (innerhalb der Klasse können wir ja auf den Konstruktor zugreifen) und zurückgegeben.
Jetzt können wir in anderen Klassen über Singleton.getInstance().DoSomethingVerySpecific() auf die Singletonklasse zugreifen.
Soviel erstmal dazu.
So long…