場景:序列生成器
系統中統一的序列生成程式,整個系統統一一套!那麼就用單例模式吧!
首先看看單例模式
1)類持有一個自己的執行個體,而且還是個靜态執行個體。
2)類的構造函數為私有屬性。
3)用以獲得執行個體的方法為靜态方法。
看看類圖

然後看一段試例程式:
1、構造方法私有
那麼,就意味着,隻能在Singleton的成員函數中,才能調用Singleton的構造函數來建立執行個體。在Singleton之外,不能建立Singleton對象的執行個體。
2、代碼中,定義了GetInstance方法,隻能通過GetInstance方法來擷取Singleton對象的執行個體,單例就是在GetInstance方法中控制的。
首先,Singleton有一個
static Singleton* instance;//惟一執行個體
Singleton* Singleton::instance=NULL;
在這裡初始化為NULL。
Singleton* Singleton::GetInstance()
{
if(instance == NULL)
{
instance = new Singleton();
}
return instance;
}
上面的函數,就是通過instance來實作單例的。
當第一次調用GetInstance時,instance 為NULL,是以會執行
instance = new Singleton();
把這個建立的執行個體儲存到靜态成員instance,并傳回這個指針。
第二次到第N次調用GetInstance時,由于instance不為空,是以會直接傳回instance 。也就是第一次調用GetInstance建立的那個執行個體。
是以這樣就實作了,單執行個體。
意思就是說,Singleton對象的執行個體,隻會被建立一次,就是說記憶體中,隻存在一個Singleton的執行個體,就是所謂,單執行個體。
弄個生成單例的執行個體程式吧!