單例模式

單例UML.png
- 一般私有化構(gòu)造函數(shù)
- 通過一個靜態(tài)方法來獲取唯一單例對象
兩個例子
靜態(tài)內(nèi)部類單例模式
public class Singleton{
private Singleton(){
//私有構(gòu)造方法
}
public static Singleton getSingleton(){
//當(dāng)方法被調(diào)用之后,其實SingletonHolder的構(gòu)造方法沒有被調(diào)用(親測)
return SingletonHoler.singleton;
}
//靜態(tài)內(nèi)部類
priveta static class SingletonHolder{
//唯一單例
private static final Singleton singleton = new Singleton();
}
}
枚舉模式
public enum Singleton{
INSTANCE;//恩,這就是單例
}
懶漢模式
public class Singleton{
private static Singleton singleton;
private Singleton(){
//私有構(gòu)造方法
}
public static synchronized Singleton getInstance(){
if(singleton == null){
singleton = new Singleton();
}
return singleton;
}
}
餓漢模式
public class Singleton{
private static final Singleton singleton = new Singleton();
private Singleton(){
//私有構(gòu)造方法
}
public static Singleton getInstance(){
return singleton;
}
}