單例模式(Singleton),保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。一般咱們能夠讓一個全局變量使得一個對象被訪問,但它不能訪問你實例化多個對象。一個最好的辦法,讓類自身負責保存它的惟一的實例。這個類能夠保證沒有其餘實例能夠被建立,而且它能夠提供一個訪問該實例的方法。ios
#include <iostream> using namespace std; //Singleton類,定義一個GetInstance操做,容許客戶訪問它的惟一實例。GetInstance是一個靜態方法,主要負責建立本身的惟一實例 class Singleton { private: //構造方法讓其private,這就堵死了外界利用new建立此類實例的可能 Singleton(){} static Singleton* instance; public: //此方法是得到本類實例的惟一全局訪問點 static Singleton *GetInstance(); }; Singleton* Singleton::instance=NULL; Singleton* Singleton::GetInstance() { if(instance==NULL) instance=new Singleton(); return instance; } int main() { Singleton *t1=Singleton::GetInstance(); Singleton *t2=Singleton::GetInstance(); if(t1==t2) cout << "兩個對象是相同的實例。" << endl; return 0; }
單例模式由於Singleton類封裝它的惟一實例,這樣它能夠嚴格控制客戶怎樣訪問以及什麼時候訪問它。簡單地說就是惟一實例的受控訪問。spa