重新設計模式 - Singleton模式

1、意圖

保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。

2、工作原理

用一個特殊方法來實例化所需的對象。其中最關鍵的就是這個方法:調用這個方法時,檢查對象是否已經實例化。如果已經實例化,該方法僅返回對該對象的一個引用。如果尚未實例化,該方法實例化該對象並返回對此新實例的一個引用。爲了確保這是實例化此類型對象的唯一方法,將這個這個類的構造函數定義爲保護或者私有的。

3、問題

幾個不同的客戶對象需要引用同一對象,而且希望確保這種類型的對象數目不超過一個。

4、解決方案

保證一個實例。

5、通用結構

6、參與者

Singleton:定義一個Instance操作,允許客戶訪問它的唯一實例。

7、協作

Client對象只能通過Instance方法創建Singleton實例。

8、效果

Client對象無需操心是否已存在Singleton實例,這是由Singleton自己控制的。

9、實現

  • 添加一個類的私有的靜態成員變量,引用所需的對象(初值爲null)。
  • 添加一個公共靜態方法,它在成員變量的值爲null時實例化這個類(並設置成員變量的值),然後返回該成員變量的值。
  • 將構造函數的狀態設置爲保護或者私有,從而防止任何人直接實例化這個類。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章