一、概念
一個類在程序中僅有單個對象存在,不會存在多個這個類的對象。保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。
主要解決一個全局使用的類頻繁地創建與銷燬。需要自己創建自己的實例並提供給其他類使用,構造函數寫爲私有。
二、例子
單例模式中保存了唯一的自己這個類的靜態實例,並將構造函數設爲私有,對外提供了靜態的getInstance函數。
public class SingleObject {
//創建 SingleObject 的一個對象
private static SingleObject instance = new SingleObject();
//讓構造函數爲 private,這樣該類就不會被實例化
private SingleObject(){}
//獲取唯一可用的對象
public static SingleObject getInstance(){
return instance;
}
public void showMessage(){
System.out.println("Hello World!");
}
}
//測試部分
public class SingletonPatternDemo {
public static void main(String[] args) {
//不合法的構造函數
//編譯時錯誤:構造函數 SingleObject() 是不可見的
//SingleObject object = new SingleObject();
//獲取唯一可用的對象
SingleObject object = SingleObject.getInstance();
//顯示消息
object.showMessage();
}
}
三、總結
單例模式有幾種實現方式,在下一節再瞅。之前對單例模式的理解是重寫new和delete,new時返回唯一的靜態實例,delete時也不刪除唯一的靜態實例。但看來不是這樣的,接下來開始對《head first》設計模式這本書進行研究。