簡介:
單例模式,是一種常用的軟件設計模式。在它的核心結構中只包含一個被稱爲單例的特殊類。通過單例模式可以保證系統中,應用該模式的類一個類只有一個實例。即一個類只有一個對象實例。
一、餓漢式
private static final CEO ceo=new CEO();
private CEO(){
}
public static CEO getCeo(){
return ceo;
}
二、懶漢式
/**
* 懶漢CEO,方法是加鎖的,所以耗時比較嚴重
*/
public class LHCEO {
private static LHCEO instance;
private LHCEO(){
}
public static synchronized LHCEO getInstance(){
if (instance==null){
instance=new LHCEO();
}
return instance;
}
}
三、Double Check Lock(DCL)實現單例
DSL的優點:既能在需要的時候初始化單例,又能夠保證線程安全,且單例對象初始化後調用getInstance()不進行同步鎖
private static LASTCEO instance=null;
private LASTCEO(){
}
public static LASTCEO getInstance(){
if (instance==null){
synchronized (LASTCEO.class) {
if (instance==null)
instance = new LASTCEO();
}
}
return instance;
}
三、優缺點比較
懶漢式的比餓漢式的實例線程安全,但是效率低,而DCL實現方式則是2種方式的結合,第一次創建的時候回比較慢,後期利用效率高。