Java Entwurfsmuster (design patterns): Singleton

Heute werfen wir einen Blick auf das erste Entwurfsmuster (Java design patterns) aus der Kategorie der Erzeugungsmuster (creational atterns) – Singleton.

Java Entwurfsmuster Singleton
Java Entwurfsmuster Singleton

In diesem Artikel erfährst du:

Lies mehr über weitere Entwurfsmuster – eine Serie von Entwurfsmustern:

Was ist das Entwurfsmuster Singleton?

Singleton ist ein Entwurfsmuster, das die Erstellung von Instanzen einer Klasse auf eine einzige Instanz beschränkt und einen globalen Zugriff auf diese Instanz ermöglicht. Mit anderen Worten: Das Singleton Muster stellt sicher, dass es nur eine Instanz einer bestimmten Klasse in Java gibt und dass diese Instanz von überall im Programm leicht zugänglich ist.

Welches Problem wird durch das Entwurfsmuster Singleton gelöst?

Das Singleton Entwurfsmuster ist nützlich, wenn Sie sicherstellen müssen, dass in der Anwendung nur eine Instanz der betreffenden Klasse existiert. Sie können beispielsweise das Singleton-Muster verwenden, um sicherzustellen, dass es nur eine Instanz eines Datenbankverbindungsobjekts, eines Protokollierungsobjekts oder eines Konfigurationsobjekts in der Anwendung gibt. Dies vermeidet die Verschwendung von Ressourcen und gewährleistet die Konsistenz der Anwendung.

Beispiel einer Singleton-Implementierung in Java

Nun zeigen wir, wie das Singleton-Entwurfsmuster in Java implementiert wird.

Wir werden eine Klasse erstellen, die wir Singleton nennen werden.
In Singleton implementieren wir einen privaten Konstruktor, der die direkte Erstellung einer Instanz verhindert.

Als nächstes benötigen wir eine Variable für die Instanz selbst, die wir instance nennen. Die Variable ist vom Typ private static und wird auf null initialisiert.

Die Methode getInstance() wird immer aufgerufen, um eine Instanz des Singletons zu erhalten. Wir erstellen und programmieren dies so, dass die Instanz, wenn sie noch nicht existiert, beim ersten Aufruf von getInstance() erstellt wird und nachfolgende Aufrufe von getInstance( ) die gleiche Instanz zurückgeben.

Wir fügen der Klasse eine public void Methode showMessage mit einem beliebigen Text hinzu.

Singleton.java

package designpatterns;

public class Singleton {
    // Pretoze k tejto premennej pristupujeme zo statickej metody,
    // musi byt tiez staticka.
    private static Singleton instance = null;

    // Privatny konstruktor zabrani vytvoreniu instancie.
    private Singleton() {
    }

    // Pre pristup k instancii budeme pouzivat tuto metodu.
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }

    // Metoda na verifikovanie volania metody na instancii.
    public void showMessage() {
        System.out.println("You have implemented design pattern Singleton.");
    }
}

Hier ist ein Beispiel für die Verwendung der Singleton Klasse:

Main.java

import designpatterns.Singleton;

public class Main {
    public static void main(String[] args) {
        Singleton singleton = Singleton.getInstance();
        singleton.showMessage();
    }
}

Dieser Code gibt die Nachricht „You have implemented design pattern Singleton.“ aus, da showMessage() auf der Instanz des Singleton aufgerufen wird.

Wir haben Dateien mit dem oben erwähnten Java-Singleton-Beispielcode vorbereitet, den Sie direkt in Java ausführen können. Lade den Code hier herunter.

Über den Autor

Jozef Wagner

Leitender Java-Entwickler

Ich programmiere seit mehr als 10 Jahren in Java, arbeite derzeit bei msg life Slovakia als leitender Java-Programmierer und helfe Kunden bei der Umsetzung ihrer Anforderungen in die Versicherungssoftware Life Factory. In meiner Freizeit entspanne ich gerne in den Bergen oder spiele ein gutes Computerspiel.

Informieren Sie uns über sich