English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Tutorial werden wir mit Beispielen das Singleton-Designmuster und die Anwendung desselben in Java lernen.
Singleton (Singleton) ist ein Designmuster und nicht eine spezifische Funktion von Java. Es stellt sicher, dass nur eine Instanz einer Klasse erstellt wird.
Design Patterns sind wie unsere Codebibliotheken, in denen verschiedene Codetechniken von Programmierern aus der ganzen Welt geteilt werden.
Hier ist, wie man in Java das Singleton verwendet.
Erstellen Sie einen privaten Konstruktor, der die Erstellung von Objekten außerhalb der Klasse beschränkt
Erstellen Sie ein privates Attribut, das auf das Singleton-Objekt referenziert.
Erstellen Sie eine öffentliche statische Methode, die es uns ermöglicht, das von uns erstellte Objekt zu erstellen und darauf zuzugreifen. Innerhalb dieser Methode erstellen wir eine Bedingung, um die Erstellung mehrerer Objekte zu beschränken.
Dies ist ein Beispiel.
class SingletonExample { //Referenz auf das private Feld des Objekts private static SingletonExample singleObject; private SingletonExample() { //Konstruktor der SingletonExample-Klasse {} public static SingletonExample getInstance() { //Schreiben Sie Code, der nur die Erstellung eines Objekts ermöglicht //Zugriff auf das Objekt nach Bedarf {} {}
In diesem Beispiel,
private static SingletonExample singleObject - Referenz auf das Objekt der Klasse
private SingletonExample() - Privater Konstruktor, um die Erstellung von Objekten außerhalb der Klasse zu beschränken.
public static SingletonExample getInstance() - Diese Methode gibt eine Referenz auf das einzigartige Objekt dieser Klasse zurück. Da diese Methode statisch ist, kann sie über den Klassennamen aufgerufen werden.
Bei der Verwendung von Database kann das Singleton verwendet werden. Sie können verwendet werden, um einen Connection Pool zu erstellen, um auf die Datenbank zuzugreifen, und gleichzeitig die gleiche Verbindung für alle Clients zu verwenden. Zum Beispiel,
class Database { private static Database dbObject; private Database() { {} public static Database getInstance() { //Erstellen eines Objekts (wenn noch nicht erstellt) if(dbObject == null) { dbObject = new Database(); {} //Rückgabe des Singleton-Objekts return dbObject; {} public void getConnection() { System.out.println("现在已经连接到数据库。"); {} {} class Main { public static void main(String[] args) { Database db1; //Der einzige Objekt, das Database referenziert db1= Database.getInstance(); db1.getConnection(); {} {}
Wenn wir das Programm ausführen, wird die Ausgabe sein:
Wir sind jetzt mit der Datenbank verbunden.
Im obigen Beispiel:
Wir haben eine Singleton-Klasse Database erstellt.
dbObject ist ein Klasse-Typ Feld. Dies wird auf das Objekt der Klasse Database verweisen.
Der private Konstruktor Database(), verhindert die Erstellung von Objekten außerhalb der Klasse.
Der statische Klasse-Typ Methode getInstance() gibt die Instanz der Klasse an die Außenwelt zurück.
Im Main-Klasse haben wir die Klasse-Typ Variable db1Wir verwenden db1Rufen Sie getInstance() auf, um das einzigartige Database-Objekt zu erhalten.
Das getConnection() Methode kann nur mit Objekten auf Database zugegriffen werden.
Da Database nur ein Objekt haben kann, können alle Clients über eine einzige Verbindung auf die Datenbank zugreifen.
Es gibt nur wenige Fälle (z.B. Log), in denen Singleton sinnvoll ist. Sogar Datenbankverbindungen sollten normalerweise nicht Singleton sein.
Wenn Sie nicht sicher sind, ob Sie Singleton verwenden sollten, empfehlen wir Ihnen, die vollständige Verwendung von Singleton zu vermeiden.