(八)單例模式

一、概念

一個類在程序中僅有單個對象存在,不會存在多個這個類的對象。保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。

主要解決一個全局使用的類頻繁地創建與銷燬。需要自己創建自己的實例並提供給其他類使用,構造函數寫爲私有。

二、例子

單例模式中保存了唯一的自己這個類的靜態實例,並將構造函數設爲私有,對外提供了靜態的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》設計模式這本書進行研究。

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