Java 單例(Singleton)類
阿新 • • 發佈:2019-02-12
參考資料
[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