1 簡介
保證一個類中,僅有一個實例,並提供一個訪問它的全局訪問點。要點如下:
- 該類只有一個實例
- 它必須自行創建這個實例
- 它必須自行向整個系統提供這個實例
2 代碼
2.1 餓漢模式
類加載時就生成了一個對象。
public class Singleton {
private static final Singleton singleton=new Singleton();
private Singleton() {}
public static Singleton getSingleton() {
return singleton;
}
}
2.2 懶漢模式
類加載時沒有生成對象,在第一次調用 getInstance() 方法時才生成對象。
public class Singleton {
private static Singleton singleton=null;
private Singleton() {}
public synchronized static Singleton getSingleton() {
if(singleton==null) {
singleton=new Singleton();
}
return singleton;
}
}
2.3 雙重檢驗模式
public class Singleton {
private volatile static Singleton sing