Einführung in die Entwurfsmuster von [GoF](https://ja.wikipedia.org/wiki/Gang of for _ (Information Engineering)) ["Einführung in Entwurfsmuster, die in der erweiterten und überarbeiteten Java-Sprache gelernt wurden"]( https://www.amazon.co.jp/ Ergänzende überarbeitete Ausgabe Einführung in in Java gelernte Entwurfsmuster-Yuki-Hiroshi / dp / 4797327030 / ref = pd_lpo_sbs_14_t_0? _ Encoding = UTF8 & psc = 1 & refRID = 2ZE4GPYNN55JGR Ich werde über zusammenfassen.
Übersetzt ins Japanische ist es eine einzelne Karte von Trump, was bedeutet, dass es nur eine im gesamten Satz gibt. Aus diesem Grund wird das ** Muster, das garantiert, dass es nur eine Instanz im gesamten System ** gibt, als ** Singleton-Muster ** bezeichnet.
Die im folgenden Klassendiagramm angezeigten Klassen werden im Singleton-Muster verwendet. Es gibt jedoch nur eine der Singleton-Klassen.
Als konkretes Beispiel basiert die Erklärung auf der Singleton-Klasse und der Ausführungsklasse.
Singleton.java
package singleton;
public class Singleton {
// 1.statisches Feld(Klassenvariable)Definieren Sie Singleton als
private static Singleton singleton = new Singleton();
// 2.privater Konstrukteur
private Singleton() {
System.out.println("Erfolgreiche Instanzerstellung");
}
// 3.Singleton-Instanz zurückgeben
public static Singleton getInstance() {
return singleton;
}
}
Die Punkte sind die folgenden drei Punkte.
** 1. ** Singleton
ist als private Klassenvariable definiert.
** 2. ** Der Konstruktor ist privat und kann nicht von anderen Klassen aufgerufen werden. (kann nicht neu sein)
** 3. ** Definiert eine getInstance () -Methode, die eine Singleton-Instanz zurückgibt.
Ich werde eine ergänzende Erklärung geben. Zunächst ruft die externe Klasse die öffentliche Methode getInstance () auf. Wenn es zu diesem Zeitpunkt zum ersten Mal aufgerufen wird, wird die Singleton-Klasse initialisiert und eine Instanz der Singleton-Klasse wird zu diesem Zeitpunkt nur einmal erstellt. Wenn danach die Methode getInstance () aufgerufen wird, wird die bereits erstellte Instanz der Singleton-Klasse zurückgegeben. Die Ausgabe erfolgt im Konstruktor, sodass Sie sehen können, dass die Instanz erfolgreich erstellt wurde, dies ist jedoch normalerweise nicht erforderlich.
-** Hauptklasse **
Rufen Sie die Methode getInstance ()
zweimal auf, um sicherzustellen, dass Sie dieselbe Instanz erhalten.
Main.java
package singleton;
public class Main {
public static void main(String[] args) {
System.out.println("***Starten Sie die Ausführungsklasse***");
Singleton obj1 = Singleton.getInstance();
Singleton obj2 = Singleton.getInstance();
if (obj1 == obj2) {
System.out.println("obj1 is obj2");
} else {
System.out.println("obj1 is not obj2");
}
System.out.println("***Ende der Ausführungsklasse***");
}
}
Das Ergebnis der Ausführung von "Main.java" ist wie folgt.
obj1 is obj2
wird ausgegeben, und Sie können bestätigen, dass Sie dieselbe Instanz erhalten können.
Ausführungsergebnis
***Starten Sie die Ausführungsklasse***
Erfolgreiche Instanzerstellung
obj1 is obj2
***Ende der Ausführungsklasse***
Durch die Verwendung des Singleton-Musters können Sie sicher sein, dass es in Ihrem gesamten System nur eine Instanz gibt. Auf diese Weise können Sie verhindern, dass sich mehrere Instanzen verwickeln und unerwartete Fehler verursachen.
Recommended Posts