Java 設計模式——單例模式


Java 設計模式——單例模式


一、單例模式有以下三個特點

1)單例類在整個系統中只能有一個實例


2)單例類必須自己創建自己的實例


3)單例類必須系統中其他對象提供這個實例


二、單例模式兩種類型

(1)餓漢式

先初始化對象;

類一加載就存在; 

Single 類一進內存,就已經創建好對象。


(2)懶漢式

對象是方法被調用時才初始化,也叫做對象的延時加載;

類一加載就爲 null(調用方法的時候纔在內存中建立對象);

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

      單例模式的好處就是:類只實例化一次,省資源,節省開銷,提高速度


三、單例模式具體實現

(1)餓漢式,在類被加載時,靜態變量m_instance會被初始化,此時類的私有構造子會被調用。


SingletonOne.java

packagedesignpattern.singleton;

public class SingletonOne {
//Create instance when the class load.
private static final SingletonOnem_instance = new SingletonOne();

//此處寫成私有方法可以防止用戶在外面用new方法來產生。
private SingletonOne(){}

public synchronized static SingletonOne getInstance(){
    
return m_instance;
}
  }


(2)懶漢式,在下面給出懶漢式單例類實現裏對靜態工廠方法使用了同步化,以處理多線程環境

SingletonTwo.java

packagedesignpattern.singleton;

public class SingletonTwo {
private static SingletonTwo m_getInstance = null;


//
此處寫成私有方法可以防止用戶在外面用new方法來產生。
private SingletonTwo(){
  
}

//synchronized可以保證線程安全
public 
synchronized staticSingletonTwo getInstance(){
    
//When invoke theinstance then create instance.
    if (m_getInstance ==null){
          m_getInstance= new SingletonTwo();
         }
          returnm_getInstance;
       }
   }


 


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