Ein Singleton (einelementige Menge, Einzelinstanz ) ist eine Klasse von der nur ein einziges Objekt erzeugt werden darf. Er stellt globale Zugriffsmöglichkeit auf das eine Objekt zur Verfügung und instanziert das Objekt automatisch beim ersten Zugriff.
Singletons können den Zugriff auf statische Variablen kapseln und ihre Instanzierung kontrollieren.
Durch die Deklaration eines privaten Konstruktors können keine Instanzen außerhalb der Klasse erzeugt werden.
Wichtige Designmerkmale einer Singleton-Klasse:
- Hat eine statische Membervariable ihres eigenen Typs, in dem die einzige Instanz gespeichert wird
- Hat eine statische Methode getInstance, mit der auf die Instanz zugegriffen werden kann
- Hat einen privaten parameterlosen Konstruktor (verhindert das Ableiten und das andere Klassen mittels new eine Instanz erzeugen)
Beispiel
Singleton.java
// Exemplarische Singleton-Implementierung
public class Singleton
{
private static Singleton instance = null;
/* Expliziter Konstruktor muss unbenutzbar gemacht werden! */
private Singleton() {}
public static Singleton getInstance() {
if(instance == null) {
instance = new Singleton();
}
return instance;
}
// Weitere Methoden ...
}
Singleton s = new Singleton(); // Fehler!!!
// Zugriff auf Singleton-Instanz mittels
Singleton instance = Singleton.getInstance();
Links