Designpatterns
Singleton Pattern
Dieses Entwurfsmuster stellt sicher, dass nur eine Instanz einer Klasse existiert und global verfügbar ist.
Was ist das Singleton Pattern?
Das Singleton Pattern ist ein Entwurfsmuster, das sicherstellt, dass:
Von einer Klasse immer nur genau eine Instanz existiert – und dass man überall im Programm auf genau dieses eine Objekt zugreifen kann.
Wann braucht man das?
Du brauchst ein Singleton, wenn du z. B.:
- eine gemeinsame Datenquelle hast (wie eine Datenbankverbindung)
- ein zentral gesteuertes Objekt willst (z. B. Konfiguration, Logging, AudioManager …)
- Ressourcen sparen willst (z. B. bei aufwändigen Objekten)
Merkmale eines Singletons
Merkmal | Bedeutung |
---|---|
Privater Konstruktor | Damit niemand von außen ein neues Objekt erzeugen kann |
Statische Variable | Speichert die einzige Instanz der Klasse |
Statische Zugriffsmethode | Gibt die Instanz zurück (z. B. getInstanz() ) – erstellt sie bei Bedarf |
Beispiel: Singleton für eine Datenbankverbindung
class Datenbank {
// statische Referenz auf die einzige Instanz
private static Datenbank instanz;
// privater Konstruktor – niemand kann von außen new Datenbank() machen
private Datenbank() {
System.out.println("Verbindung zur Datenbank aufgebaut");
}
// statische Methode zum Zugriff auf das Singleton
public static Datenbank getInstanz() {
if (instanz == null) {
instanz = new Datenbank(); // nur beim ersten Mal!
}
return instanz;
}
}
Nutzung
public class Main {
public static void main(String[] args) {
Datenbank db1 = Datenbank.getInstanz();
Datenbank db2 = Datenbank.getInstanz();
System.out.println(db1 == db2); // Ausgabe: true → beide zeigen auf dasselbe Objekt
}
}
Obwohl
getInstanz()
zweimal aufgerufen wird, entsteht nur eine einzige Instanz!Was verhindert das Singleton?
Datenbank db = new Datenbank(); // ❌ Fehler – Konstruktor ist privat!
Das Singleton ist wie ein Manager im System – es gibt nur einen, und jeder fragt ihn, wenn er etwas braucht.
Überblick zu Entwurfsmustern
Diese Seite bietet eine Einführung in Entwurfsmuster, ihre Kategorien und ordnet häufige Muster wie Singleton, Observer, Factory, MVC und Facade ein.
Observer Pattern
Das Observer-Muster ermöglicht es, Änderungen an einem Objekt automatisch an abhängige Objekte weiterzugeben.