單例類的標準寫法

大部分情況下,我們把類的構造器設置成public權限,允許創建多個對象。

如果一個類始終只能允許創建一個對象,則需要用private修飾該類的構造器,將構造器隱藏起來,並提供給外界一個唯一的public訪問點,用於外部創建唯一的對象。也就是單例類。

因爲在調用該 public 方法之前,肯定是沒有對象的,所以調用的時候肯定是類調用,注意需要用 static修飾該 public 方法。

該類需要使用一個成員變量來緩存以前創建過的對象,因爲要被static getInstance方法調用,所以必須用 static 修飾。

class Singleton {

   //使用一個變量來緩存曾經創建的實例
   private static Singleton instance;

   //對構造器使用 private修飾,隱藏構造器
   private Singleton() {}

   //提供一個外界訪問的入口點,用static修飾
   //因爲調用該方法之前,沒有對象,只能通過類來調用
   public static Singleton getInstance() {

    if(instance == null) {
         instance = new Singleton();           
}
return instance;
}
}

public class SingletonTest {

   public static void main(String[] args) {
          Singleton s1 = Singleton.getInstance();
          Singleton s2 = Singleton.getInstance();
          System.out.println(s1 == s2); //將輸出true
}
}

 

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