1.定義

保證一個(gè)類(lèi)僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。

 

2.適用性

1)當(dāng)類(lèi)只能有一個(gè)實(shí)例而客戶可以從一個(gè)眾所周知的訪問(wèn)點(diǎn)訪問(wèn)它時(shí)。

2)當(dāng)這個(gè)唯一實(shí)例應(yīng)該是通過(guò)子類(lèi)化可擴(kuò)展的,并且客戶應(yīng)該無(wú)需更改代碼就能使用一個(gè)擴(kuò)展的實(shí)例時(shí)。

 

3.結(jié)構(gòu)

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn) 

1 單例模式類(lèi)圖

注:

Singleton:定義一個(gè)Instance操作,允許客戶訪問(wèn)它的唯一實(shí)例。Instance是一個(gè)類(lèi)操作(C#中為靜態(tài)方法),Singleton負(fù)責(zé)創(chuàng)建它自己的唯一實(shí)例。

4.實(shí)現(xiàn)方法

1)經(jīng)典模式

靜態(tài)變量uniqueInstance存儲(chǔ)唯一實(shí)例。公有靜態(tài)方法GetInstance提供訪問(wèn)SingletonFirst的全局訪問(wèn)點(diǎn),由于除了GetInstance方法外,類(lèi)的成員均為私有的,所以GetInstance提供的為唯一訪問(wèn)方式。在GetInstance()方法中,對(duì)uniqueInstance是否為null做了判斷,因此使得對(duì)象只能被實(shí)例化一次。

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

 1 public class SingletonFirst 2 { 3       private static SingletonFirst uniqueInst