Singleton可以說(shuō)是《Design Pattern》中最簡(jiǎn)單也最實(shí)用的一個(gè)設(shè)計(jì)模式。那么,什么是Singleton?
      顧名思義,Singleton就是確保一個(gè)類只有唯一的一個(gè)實(shí)例。Singleton主要用于對(duì)象的創(chuàng)建,這意味著,如果某個(gè)類采用了Singleton模式,則在這個(gè)類被創(chuàng)建后,它將有且僅有一個(gè)實(shí)例可供訪問(wèn)。很多時(shí)候我們都會(huì)需要Singleton模式,最常見(jiàn)的比如我們希望整個(gè)應(yīng)用程序中只有一個(gè)連接數(shù)據(jù)庫(kù)的Connection實(shí)例;又比如要求一個(gè)應(yīng)用程序中只存在某個(gè)用戶數(shù)據(jù)結(jié)構(gòu)的唯一實(shí)例。我們都可以通過(guò)應(yīng)用Singleton模式達(dá)到目的。
      一眼看去,Singleton似乎有些像全局對(duì)象。但是實(shí)際上,并不能用全局對(duì)象代替Singleton模式,這是因?yàn)椋浩湟唬罅渴褂萌謱?duì)象會(huì)使得程序質(zhì)量降低,而且有些編程語(yǔ)言例如C#,根本就不支持全局變量。其二,全局對(duì)象的方法并不能阻止人們將一個(gè)類實(shí)例化多次:除了類的全局實(shí)例外,開(kāi)發(fā)人員仍然可以通過(guò)類的構(gòu)造函數(shù)創(chuàng)建類的多個(gè)局部實(shí)例。而Singleton模式則通過(guò)從根本上控制類的創(chuàng)建,將"保證只有一個(gè)實(shí)例"這個(gè)任務(wù)交給了類本身,開(kāi)發(fā)人員不可能再有其它途徑得到類的多個(gè)實(shí)例。這一點(diǎn)是全局對(duì)象方法與Singleton模式的根本區(qū)別。

首先保證類中有唯一的一個(gè)構(gòu)造器,而且是private的,私有的,就是除了在該類中其他地方都不可以訪問(wèn)的。
其次有一個(gè)私有的private該類型的變量,這個(gè)變量可以在聲明的的時(shí)候就實(shí)例化,也可以在構(gòu)造器中調(diào)用的時(shí)候再實(shí)例化,但是,在構(gòu)造器中實(shí)例化時(shí)要先判斷:
private A a;
public A(){
if(a == null)
a= new A();
}
這樣就可以保證只有一個(gè)A的實(shí)例,
淡然最重要的是要有個(gè)public的返回A類型變量的方法,用來(lái)返回這個(gè)唯一的變量
public A returnA(){
return a;
}
這樣就可以了,實(shí)際上就三方面:
1,一個(gè)私有的構(gòu)造器
2,一個(gè)私有的該類類型的變量
3,必須有一個(gè)共有的返回類型為該類類型的方法,用來(lái)返回這個(gè)唯一的變量