單例模式(Singleton)也叫單态模式,從字面意思可以看出就是在這程式中,隻有唯一的個執行個體。
主要思想:
(控制建立權利)私有化構造方法
(給一個擷取單一執行個體對象入口)寫個靜态方法,每次傳回同一執行個體引用
主要由兩種模式
1.餓漢式(靜态常量)
在類加載的時候就會執行個體化
public class Singleton{
private final static Singleton singleton = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return singleton;
}
}
2.懶漢式(通過同步方法)
public class Singleton{
private static Singleton singleton;
private Singleton(){};
public static sychormnized Singleton getInstance(){
if(singleton==null){
return new Singleton();
}
return singleton;
}
}
3.雙重檢驗(Double check) 延遲加載 效率高 線程安全
public class Singleton{
private static volatile Singleton singleton;
private Singleton(){};
public static Singleton getInstance(){
if(singleton==null){
sychormnized(Singleton.class){
if(singleton==null){
singleton = new Singleton();
}
}
}
return singleton;
}
}
4.靜态内部類
public class Singleton{
private Singleton(){};
private static class SingletonHolder{
private final static Singleton singleton = new Singleton();
}
public static Singleton getInstance(){
return Singleton.singleton;
}
}
5.枚舉
public enum Singleton{
INSTANCE;
public void method(){
}
}