單例設計模式(餓漢式和懶漢式)

單例設計模式兩種寫法:

單例用代碼體現

1,將構造函數私有化;

2,在類中創建一個本類對象.

3,提供一個方法可以獲取到本類的對象.

//先初始化對象,稱爲:餓漢式(開發用),建立單例時使用

//Single類一進內存,就已經創建好了對象.

class Single{

private Single(){}

private static Single s = new Single();

public static Single getInstance(){

    return s;

}

}

 

//對象時方法被調用時,才初始化,也叫做對象的延時加載.稱爲懶漢式

//Single類進內存,對象還沒有存在,只有調用了getInstance方法時,才建立對象.

class Single{

private Single(){}

private static Single s = null;

public static Single getInstance(){  

  if(s == null)                 //優化  if(s == null)

     s = new Single();             { synchronized(Single.class){

   return s;                         if(s == null)

}                                        s = new Single();

}                                    }

                                   }  return s;}}

因爲JVM在非常多次運行中,可能會出現不判斷s==null,所以更安全的是在函數上加synchronized.

還有一種寫法

class Single{

   privateSingle(){}

   public static final Single INSTANCE = new Single();//final修飾時,變量的值一設置就不能修改

}


發佈了35 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章