單例模式要點
- 私有的構(gòu)造方法
- 指向?qū)嵗乃接徐o態(tài)引用
- 獲取實例對象的公有靜態(tài)方法
餓漢模式(非線程安全)
public class SingleTon {
private SingleTon(){}//私有化構(gòu)造函數(shù)
private static final SingleTon singleTon=new SingleTon();
public static SingleTon getInstance(){
return singleTon;
}
}
懶漢模式(非線程安全)
public class SingleTon {
private SingleTon() {}//私有化構(gòu)造函數(shù)
private static SingleTon singleTon;
public static SingleTon getInstance() {
if (singleTon == null)
singleTon = new SingleTon();
return singleTon;
}
}
雙重線程鎖檢查單例(線程安全)
public class SingleTon {
private SingleTon() {}//私有化構(gòu)造函數(shù)
private static volatile SingleTon singleTon;
public static SingleTon getInstance() {
if (singleTon == null){
synchronized (SingleTon.class){
SingleTon st=singleTon;
if (st == null) {
st=new SingleTon();
singleTon=st;
}
}
}
return singleTon;
}
}
枚舉單例
public enum SingleTon{
Instance;
}