1. 程式人生 > >Java 單例(Singleton)類

Java 單例(Singleton)類

參考資料

[1]. 瘋狂Java講義(第三版) 李剛

單例(Singleton)類

雖然Java 系統允許,但是類成員還是不要訪問例項成員。
如果一個類始終只能建立一個例項,則這個類被稱為單例類。
一個簡單的單例類,程式碼如下:

class Singleton
{
    // 使用一個類變數來快取曾經建立的例項
    private static Singleton instance;
    // 將構造器使用private修飾,隱藏該構造器
    private Singleton(){}
    // 提供一個靜態方法,用於返回Singleton例項
    // 該方法可以加入自定義的控制,保證只產生一個Singleton物件
public static Singleton getInstance() { // 如果instance為null,表明還不曾建立Singleton物件 // 如果instance不為null,則表明已經建立了Singleton物件, // 將不會重新建立新的例項 if (instance == null) { // 建立一個Singleton物件,並將其快取起來 instance = new Singleton(); } return
instance; } }

呼叫上面的單例類:

// 建立Singleton物件不能通過構造器,
// 只能通過getInstance方法來得到例項
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1 == s2); // 將輸出true