Technischer Projektleiter
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.
Lies mehr über weitere Entwurfsmuster – eine Serie von Entwurfsmustern:
- Entwurfsmuster Builder
- Entwurfsmuster Prototyp
- Entwurfsmuster Factory
- Entwurfsmuster Abstract Factory
- Entwurfsmuster Adapter
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.