Was ist das Singleton-Muster?
Das Singleton-Muster ist ein gängiges Entwurfsmuster, das sicherstellt, dass Instanzen einer Klasse Singletons sind.
Vorteile des Singleton-Modus:
(1) Zunächst müssen Speicherressourcen gespart werden, unabhängig davon, wie häufig Instanzen durch exponierte Methoden erstellt werden Es wird garantiert, dass das Objekt das gleiche Instanzobjekt im Systemspeicher ist. (2) Flexibilität: Da die Erstellung aller Instanzen von dieser Klasse gesteuert wird, kann diese Klasse den Instanziierungsprozess flexibel ändern.
(3) Kontrollierter Zugriff auf Instanzen, Singleton-Klassen können den kontrollierten Zugriff auf eindeutige Instanzen leicht steuern;
Nachteile des Singleton-Modus:(1 ) Der Singleton-Modus hat keine Schnittstelle und ist nicht einfach zu erweitern. (2) Sie können den Reflexionsmodus nicht zum Erstellen eines Singletons verwenden, da sonst ein neues Objekt instanziiert wird. Verwenden Sie Lazy Singleton. Achten Sie bei der Verwendung des Beispielmodus auf Thread-Sicherheitsprobleme.
Möglichkeiten zur Implementierung des Singleton-Modus:Hungry-Singleton-Methode
package index; public class Superman { //空的构造器 private Superman(){} //实例化对象 private static Superman supermanInstance = new Superman(); //获取实例化对象的静态函数getSupermanInstance() public static Superman getSupermanInstance(){ return supermanInstance; } }Der Singleton ist im Voraus neu, wenn die Klasse geladen wird, und ein SupermanInstance-Objekt wird zu Beginn instanziiert. Unabhängig davon, ob Ihr Programm dieses Objekt aufrufen muss oder nicht, ist es bereits vorhanden Keine Verzögerung beim Laden. Um die Programmlast zu reduzieren, ist in den meisten Fällen ein verzögertes Laden erforderlich. Daher ist diese Art der Implementierung eines Singletons nicht die beste Wahl.
Lazy Singleton-Methode (Single-Threaded-Schreiben)
package index; public class Superman { //空的构造器 private Superman(){} //实例化对象;只声明 不使用new进行实例化 private static Superman supermanInstance = null; //获取实例化对象的静态函数getSupermanInstance() public static Superman getSupermanInstance(){ if(supermanInstance==null){ //如果为null的情况再进行实例化 supermanInstance = new Superman(); } return supermanInstance; } }
Empfohlenes Tutorial: Java-Tutorial
Das obige ist der detaillierte Inhalt vonWas ist ein Java-Singleton-Muster?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!