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

MerkmalBedeutung
Privater KonstruktorDamit niemand von außen ein neues Objekt erzeugen kann
Statische VariableSpeichert die einzige Instanz der Klasse
Statische ZugriffsmethodeGibt 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.