Java設計模式:(二)單例模式

Java設計模式:(二)單例模式

單例(Singleton)模式的定義:指一個類只有一個實例,且該類能自行創建這個實例的一種模式。
意圖: 保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。
主要解決: 一個全局使用的類頻繁地創建與銷燬。

單例模式實現步驟:

1.一個類只有一個實例

如果要做到只有一個實例那麼該的的構造方法不能是public的,是private的。因爲該類的構造方法如果是public的,那就就可以通過new SingleObject() 的方式來生成實例,不能保證只有一個實例

2.生成實例

構造方法是private的,那麼只有該類能夠訪問SingleObject類的構造方法,那麼只能在SingleObject中自己調用構造方法生成實例

 private SingleObject instance = new SingleObject();

3.全局只有一個訪問點

如上面的語句已經生成了實例instance,但是該實例,還是private的,只有SingleObject類的成員能夠訪問,這樣是不符合的,那麼爲它新增一個方法來返回該實例getInstance()。還有一點不符合:每調用一次方法就會放回一個實例,這樣是不符合的,那麼爲該方法新增一個static關鍵字,讓他只能生成一個對象。

   public static SingleObject getInstance(){
      return instance;
   }

4.靜態方法只能訪問靜態成員變量

於是爲成員變量新增static關鍵字

private static SingleObject instance = new SingleObject();
下面是單例模式的代碼
public class SingleObject {

   //靜態方法只能訪問靜態成員變量
   private static SingleObject instance = new SingleObject();

   //構造方法爲什麼是私有的,因爲如果是public那麼,每new一個對象就會有一個對象生成,不符合單例模式。所以不可以使用SingleObject instance = new SingleObject();  

   private SingleObject(){}

   //那麼就思考使用類.方法名的方式調用方法,在靜態方法中生成對象。不能每調用一次方法就生成一個對象,那麼就在類中生成一個對象,把它返回給對象。
   public static SingleObject getInstance(){
      return instance;
   }

   public void showMessage(){
      System.out.println("Hello World!");
   }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章