public class Singleton {
// 1.防止外部直接 new 对象破坏单例模式
private Singleton() {}
// 2.通过私有变量保存单例对象
private static Singleton instance = new Singleton();
// 3.提供公共获取单例对象的方法
public static Singleton getInstance() {
return instance;
}
}
Nachteil: Das Objekt wird beim Laden der Klasse erstellt. Wenn es nach der Erstellung nicht verwendet wird, führt dies zu einer Verschwendung von Ressourcen. 2. Der Lazy-Modus und der Hungrig-Modus sind genau das Gegenteil. Der sogenannte Lazy-Loading-Modus bedeutet, dass er nur bei der ersten Verwendung initialisiert wird
Der Implementierungscode lautet wie folgt:public class Singleton { // 1.防止外部直接 new 对象破坏单例模式 private Singleton() {} // 2.通过私有变量保存单例对象 private static volatile Singleton instance = null; // 3.提供公共获取单例对象的方法 public static Singleton getInstance() { if (instance == null) { // 第一次效验 synchronized (Singleton.class) { if (instance == null) { // 第二次效验 instance = new Singleton(); } } } return instance; } }Der Lazy-Modus verwendet doppelte Validierungssperren und Volatilität, um die Thread-Sicherheit zu gewährleisten. Wie aus dem obigen Code ersichtlich ist, ist es egal, ob es sich um den Hungrig-Modus oder den Lazy-Modus handelt Implementierung Die Schritte sind die gleichen:
Erstellen Sie einen privaten Konstruktor, um zu verhindern, dass andere Aufrufe neue Objekte direkt verwenden, sodass das erstellte Objekt kein Singleton-Objekt ist.
Erstellen Sie eine private Variable, um das Singleton-Objekt zu speichern.
public class Singleton { // 1.防止外部直接 new 对象破坏单例模式 private Singleton() { } // 2.静态内部类 private static class SingletonHolder { private static final Singleton INSTANCE = new Singleton(); } // 3.提供公共获取单例对象的方法 public static final Singleton getInstance() { return SingletonHolder.INSTANCE; } }
4. Enumeration
Die Enumeration wird von der Java Virtual Machine nur geladen und initialisiert, wenn sie zum ersten Mal verwendet wird, daher ist sie auch Thread-sicher und Lazy Beim Laden lautet der Implementierungscode wie folgt:public enum EnumSingleton {
INSTANCE;
public EnumSingleton getInstance(){
return INSTANCE;
}
}
Das obige ist der detaillierte Inhalt vonImplementierungsmethoden und allgemeine Schreibmethoden des Java-Singleton-Musters. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!