1. Beschreibung
1) Singleton -Muster: Stellen Sie sicher, dass es nur eine Instanz einer Klasse gibt, sie selbst instanziieren und diese Instanz für das System geben
2) Singleton -Musterklassifizierung: Singleton -Muster (ein Objekt für seine eigene Referenz, wenn die Klasse geladen ist), Lazy Singleton -Muster (das Objekt wird nur so instanziiert, dass die Methode, die die Instanz erhält, wie GetInstance) Die Modusleistung ist besser als der Lazy Singleton -Modus, der faulen Singleton -Modus wird im Allgemeinen in C ++ verwendet.
3) Singleton -Musterelemente:
a) Privatbaumethode
b) Private statische Bezugspunkte auf seine eigene Instanz
c) öffentliche statische Methode mit eigener Instanz als Rückgabewert
2. Beispiel
Hunger Singleton -Modus:
Die Codekopie lautet wie folgt:
Paket com.wish.modedesign;
öffentliche Klasse hungrysingleton {
private statische Hungrysingleton -Instanz = new Hungrysingleton ();
private hungrysingleton () {
}
public static hungrysingleton getInstance () {
Rückkehrinstanz;
}
}
Lazy Singleton -Modus:
Die Codekopie lautet wie folgt:
Paket com.wish.modedesign;
öffentliche Klasse Singleton {
private Singleton () {
}
private statische Singleton -Instanz;
public static synchronisierte Singleton getInstance () {// Achten Sie beim Multi-Threading auf Thread-Sicherheit
if (instance == null) {
Instance = new Singleton ();
}
Rückkehrinstanz;
}
}
Testklasse Driver.java
Die Codekopie lautet wie folgt:
Paket com.wish.modedesign;
öffentlicher Klassenfahrer {
public static void main (String [] args) {
Singleton S1 = Singleton.getInstance ();
Singleton S2 = Singleton.getInstance ();
System.out.println (S1 == S2);
}
}
3. Vorteile und anwendbare Szenarien
1) Vorteile des Singleton -Modus:
Es gibt nur ein Objekt im Speicher, das den Speicherplatz speichert.
Die Vermeidung häufiger Schöpfung und Zerstörung von Objekten kann die Leistung verbessern.
Vermeiden Sie mehrere Berufe gemeinsamer Ressourcen.
Kann weltweit zugreifen.
2) Anwendbare Szenarien:
Objekte, die häufig instanziiert und dann zerstört werden müssen.
Objekte, die beim Erstellen von Objekten zu viel Zeit oder zu viel Ressource in Anspruch nehmen, häufig verwendet werden.
Stateful Tool-ähnliches Objekt.
Objekte, die häufig auf Datenbanken oder Dateien zugreifen.
4.. Dinge zu beachten, wenn Sie verwendet werden
1) Bei der Verwendung können Sie kein Singleton mit Reflexionsmodus erstellen, andernfalls wird ein neues Objekt instanziiert.
2) Achten Sie auf Probleme mit der Sicherheit von Threads, wenn Sie den faulen Singleton -Modus verwenden
3) Das hungrige Singleton -Muster und die faulen Singleton -Muster -Konstruktionsmethoden sind beide privat und können daher nicht vererbt werden.