Java設計模式——單例模式(第3種爲最終模式)
拋磚引玉 一:懶漢模式
/*
* 問題域:設計一個能且只能產生一個對象的類
*/
//單列模式一------懶漢模式
/*
* 1、它是一種預加載的實現。不管代碼中有沒有用到getInstance,都會被產生;
* 2、線程絕對安全的
*/
public class Singleton {
private static Singleton sin = new Singleton();
private Singleton(){
}
public static Singleton getInstance(){
return sin;
}
}
拋磚引玉 二:餓漢模式
//單列模式二-----餓漢模式
/*
* 1、延遲加載實現,只有在真正需要Singleton對象的時候才產生
* 2、不加同步,線程不安全;加同步,效率低
*/
public class Singleton {
private static Singleton sin;
private Singleton(){
}
public synchronized static Singleton getInstance(){
if(sin == null){
sin = new Singleton();
}
return sin;
}
}
最終的--模式:單例模式 之雙鎖機制
//單列模式三---雙鎖機制
//既支持延遲加載,又支持線程安全的高併發
public class Singleton {
private static Singleton sin;
private Singleton(){
}
public static Singleton getInstance(){
if(sin == null){
synchronized(Singleton.class){
if(sin == null){
sin = new Singleton();
}
}
}
return sin;
}
}