大部分情況下,我們把類的構造器設置成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
}
}