單例模式

  顧名思義,“單例模式”就是隻有一個實例(同一時間)。單例模式確保某一個類只有一個實例,這個類就叫單例類。單例模式有3個要點:

             1.某個類只能有一個實例;

             2.它必須自行創建這個實例;

             3.它必須自行向整個系統提供這個實例。

        爲了避免其他類自由創建該類的實例,我們把該類的構造器使用private修飾,從而把該類的構造器隱藏起來。根據良好封裝的原則,一旦把該類的構造器封裝起來,就要提供一個public方法作爲該類的訪問點,用於創建該類的對象,且該方法必須使用static修飾,因爲在調用該方法之前還存在對象,因此調用該方法的不可能是對象,只能是類。

         除此之外,該類還必須緩存已經創建的類,否則該類無法知道是否已經創建過對象,也就無法保證只能創建一個對象。爲此,該類需要使用一個屬性來保存已經創建的對象,因爲該屬性需要被上面的靜態方法訪問,所以該屬性必須使用static修飾。

         另外,單例的實現方式主要有餓漢式和懶漢式兩種。所謂餓漢式,就是一上來就new一個實例賦給instance實例,例如:

                  

使用時,直接通過公開的靜態工廠方法就行,以上面爲例,就可以是:Ehanshi.getInstance().
  懶漢式在單例類自身被加載時instance就會被初始化,對於資源密集、配置開銷比較大的單例類中更合理的是將實例化(new)推遲到使用它的時候,就是所謂的懶漢式。如下:
            



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