單例設計模式

簡介:
單例模式,是一種常用的軟件設計模式。在它的核心結構中只包含一個被稱爲單例的特殊類。通過單例模式可以保證系統中,應用該模式的類一個類只有一個實例。即一個類只有一個對象實例。

一、餓漢式

    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種方式的結合,第一次創建的時候回比較慢,後期利用效率高。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章