單態設計模式(Singleton Pattern)

 

單態設計模式(Singleton Pattern)

一、 初識單態
單態設計模式(Singleton Pattern),又稱單件,單個等設計模式。也許,在java方面的材料中你會發現叫法多爲單態,而在c#方面的材料中的叫法多爲單件。無論是那種叫法,都是指的同一種設計模式Singleton pattern,筆者習慣叫單態,在本文中以單態稱呼。

二、 單態的特點和定義

單態,簡單的講,就是保證程序在運行的過程中只允許有一個實例對象產生。期特點簡單的描述爲:

1. 單態類只能有一個實例。

2. 單態類必須自己創建自己的一個唯一的實例,

3. 單態類必須給客戶端使用次實例的方式, 通過一定的方式返回

三、 單態的原型

使用Singleton模式有一個必要條件:在一個系統要求一個類只有一個實例時才應當使用單例模式。反過來,如果一個類可以有幾個實例共存,就不要使用單例模式。

單態的社會原型非常多,像美國的總統,只能有一個,是通過選舉得來的;像打印機的當前的打印作業也只能有一個,等等。

注意:

不要使用單例模式存取全局變量。這違背了單例模式的用意,最好放到對應類的靜態成員中。

不要將數據庫連接做成單例,因爲一個系統可能會與數據庫有多個連接,並且在有連接池的情況下,應當儘可能及時釋放連接。Singleton模式由於使用靜態成員存儲類實例,所以可能會造成資源無法及時釋放,帶來問題。

四、 單態的實現

單態的實現,用一句比較詼諧的話來說就是:“只需周官放火,不許百姓點燈”。

概要的講單態的設計就是上面那句話,在類中把構造函數私有化,這樣就不能在類的外部(客戶端)用 new來創建類的實例了(這就是不許百姓點燈),然後在類的內部來實例化一份類的實例,通過某種方式返回給客戶端(這就是所謂的只需州官防火),java中通常是通過一個靜態方法返回,C#中有時候也是會使用屬性來返回的。

具體的講,單態的實現主要是在對象實例化的時候有些區別,問題在於什麼時候來實例化這個對象,分兩種方式

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