Heim  >  Artikel  >  Java  >  So implementieren Sie das Singleton-Muster des Java-Creational-Design-Musters

So implementieren Sie das Singleton-Muster des Java-Creational-Design-Musters

PHPz
PHPznach vorne
2023-05-15 10:49:05785Durchsuche

Einführung

Das Singleton-Muster ist ein kreatives Designmuster. Zu seinen Hauptmerkmalen gehören:

  • Nur eine Instanz: Das Singleton-Muster stellt sicher, dass nur ein Instanzobjekt im System vorhanden ist und der gesamte Zugriff auf das Objekt auf dasselbe erfolgt Objekt. Ein Verweis auf ein Objekt

  • Globaler Zugriff: Der Singleton-Modus kann global auf das Instanzobjekt zugreifen und so Konflikte und Konkurrenz zwischen mehreren Objekten vermeiden.

  • Verzögerte Initialisierung: Der Singleton-Modus verwendet normalerweise die verzögerte Initialisierungstechnologie und benötigt dann den Singleton Das Objekt wird nur bei Bedarf erstellt, wodurch unnötige Ressourcenverschwendung und Leistungsverluste vermieden und die Korrektheit und Zuverlässigkeit des Singleton-Objekts sichergestellt werden. Thread-Sicherheit: Der Singleton-Modus muss Thread-Sicherheitsprobleme berücksichtigen, um die Erfassung unter Multi-Threads sicherzustellen Erhaltene Instanzobjekte sind gleich, wodurch Konkurrenz und Konflikte zwischen Multi-Threads vermieden werden Systemleistung.

  • vermeidet Konkurrenz und Konflikte zwischen mehreren Instanzen und gewährleistet die Konsistenz und Stabilität von Objektzuständen

kann die Anzahl der Instanzen einer bestimmten Klasse im System steuern, um Verschwendung von Systemressourcen und Missbrauch zu vermeiden

  • erleichtert die Implementierung von Thread-Sicherheit, Serialisierung, Reflexion und anderen Funktionen und verbessert so die Zuverlässigkeit und Sicherheit von Objekten.

  • Nachteile.

  • Der Singleton-Modus erhöht die Komplexität des Codes und die Komplexität des Systems Schwierigkeiten bei der Wartung und Schwierigkeiten beim Testen des Codes

  • Der Singleton-Modus kann dazu führen, dass der Lebenszyklus des Singleton-Objekts zu lang ist, was dazu führt, dass das Objekt nicht rechtzeitig freigegeben wird, was sich negativ auf die Leistung des Systems auswirkt

  • Der Singleton-Modus kann missbraucht werden. Dadurch gibt es zu viele Singleton-Objekte im System, was die Belegung der Systemressourcen erhöht und die Verwaltung erschwert. Der Singleton-Modus kann insbesondere in Multithread-Umgebungen zerstört werden. Es sind spezielle Implementierungsmethoden erforderlich, um die Genauigkeit und Zuverlässigkeit von Singleton-Objekten sicherzustellen. Es ist in einer Multithread-Umgebung sicher. In einer Multithread-Umgebung kann durch die Verwendung eines Doppelsperrmechanismus sichergestellt werden, dass nur eine Instanz erstellt wird.

    package com.fanqiechaodan.singleton.singleton1;
    /**
     * @Classname Singleton
     * @Description
     */
    public class Singleton {
        private static final Singleton INSTANCE = new Singleton();
        private Singleton(){
            // 私有构造函数
        }
        public static Singleton getInstance(){
            return INSTANCE;
        }
    }
  • Statische innere Klasse

Diese Methode nutzt den Klassenlademechanismus von Java. Die Singleton-Instanz wird nur geladen, wenn der SingletonHolder Wenn auf die Klasse zum ersten Mal zugegriffen wird, gewährleistet sie nicht nur Thread-Sicherheit, sondern erreicht auch verzögertes Laden.

Aufzählung
  • Die Verwendung von Aufzählungstypen kann den Thread-sicheren Singleton-Modus sehr bequem implementieren Es ist threadsicher und hat nur eine Instanz.

    package com.fanqiechaodan.singleton.singleton2;
    /**
     * @Classname Singleton
     * @Description
     */
    public class Singleton {
        private static volatile Singleton instance;
        private Singleton() {
            // 私有构造函数
        }
        public static Singleton getInstance() {
            if (instance == null) {
                synchronized (Singleton.class) {
                    if (instance == null) {
                        instance = new Singleton();
                    }
                }
            }
            return instance;
        }
    }

  • Hungry Man Die Lazy-Style-Implementierung ist einfach, unterstützt jedoch kein Lazy Loading Laden, erfordert jedoch die Verwendung eines Sperrmechanismus mit doppelter Überprüfung und der Code ist komplizierter. Die statische interne Klasse ist eine einfache, threadsichere Implementierungsmethode, die auch verzögertes Laden unterstützt. Der Aufzählungstyp ist der einfachste Die Singleton-Implementierungsmethode ist die sicherste. Sie muss keine Thread-Sicherheitsprobleme berücksichtigen und unterstützt auch das verzögerte Laden In den meisten Singleton-Modi wird daher empfohlen, das Singleton-Muster in der tatsächlichen Entwicklung zu verwenden.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie das Singleton-Muster des Java-Creational-Design-Musters. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen