Java-Singleton-Klasse
Java-Singleton-Klasse
In diesem Tutorial lernen wir anhand von Beispielen, Singleton Design Pattern in Java zu implementieren.
In Java ist Singleton ein Entwurfsmuster, das sicherstellt, dass eine Klasse nur ein Objekt haben kann.
Um eine Singleton-Klasse zu erstellen, muss eine Klasse die folgenden Eigenschaften implementieren:
- Erstellen Sie einen
private
Konstruktor der Klasse, um die Objekterstellung außerhalb der Klasse einzuschränken. - Erstellen Sie eine
private
Attribut des Klassentyps, das auf das einzelne Objekt verweist. - Erstellen Sie eine
public static
Methode, mit der wir das von uns erstellte Objekt erstellen und darauf zugreifen können. Innerhalb der Methode erstellen wir eine Bedingung, die uns daran hindert, mehr als ein Objekt zu erstellen.
Beispiel:Java-Singleton-Klassensyntax
class SingletonExample {
// private field that refers to the object
private static SingletonExample singleObject;
private SingletonExample() {
// constructor of the SingletonExample class
}
public static SingletonExample getInstance() {
// write code that allows us to create only one object
// access the object as per our need
}
}
Im obigen Beispiel
private static SingletonExample singleObject
- eine Referenz auf das Objekt der Klasse.private SingletonExample()
- ein privater Konstruktor, der das Erstellen von Objekten außerhalb der Klasse einschränkt.public static SingletonExample getInstance()
- Diese Methode gibt die Referenz auf das einzige Objekt der Klasse zurück. Da die Methode static , kann über den Klassennamen darauf zugegriffen werden.
Verwendung von Singleton in Java
Singletons können beim Arbeiten mit Datenbanken verwendet werden. Sie können verwendet werden, um einen Verbindungspool für den Zugriff auf die Datenbank zu erstellen, während dieselbe Verbindung für alle Clients wiederverwendet wird. Zum Beispiel
class Database {
private static Database dbObject;
private Database() {
}
public static Database getInstance() {
// create object if it's not already created
if(dbObject == null) {
dbObject = new Database();
}
// returns the singleton object
return dbObject;
}
public void getConnection() {
System.out.println("You are now connected to the database.");
}
}
class Main {
public static void main(String[] args) {
Database db1;
// refers to the only object of Database
db1= Database.getInstance();
db1.getConnection();
}
}
Wenn wir das Programm ausführen, lautet die Ausgabe:
You are now connected to the database.
In unserem obigen Beispiel,
- Wir haben eine Singleton-Klasse Database erstellt .
- Das dbObject ist ein Klassentypfeld. Dies bezieht sich auf das Objekt der Klasse Database .
- Der private Konstruktor
Database()
verhindert die Objekterstellung außerhalb der Klasse. - Die statische Klassentypmethode
getInstance()
gibt die Instanz der Klasse an die Außenwelt zurück. - Im Haupt Klasse haben wir die Klassentypvariable db1 . Wir rufen
getInstance()
an mit db1 um das einzige Objekt der Datenbank zu erhalten . - Die Methode
getConnection()
kann nur über das Objekt der Datenbank zugegriffen werden . - Da die Datenbank nur ein Objekt haben kann, können alle Clients über eine einzige Verbindung auf die Datenbank zugreifen.
Singleton ist eher ein Entwurfsmuster als ein Java-spezifisches Feature. Ein Entwurfsmuster ist wie unsere Codebibliothek, die verschiedene Programmiertechniken enthält, die von Programmierern auf der ganzen Welt geteilt werden.
Es ist wichtig zu beachten, dass es nur wenige Szenarien (wie die Protokollierung) gibt, in denen Singletons sinnvoll sind. Wir empfehlen Ihnen, die Verwendung von Singletons vollständig zu vermeiden, wenn Sie sich nicht sicher sind, ob Sie sie verwenden sollen oder nicht. Weitere Informationen:Was ist so schlimm an Singleton?
Java