【設計模式】——單例模式

單例模式(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

相關文章
相關標籤/搜索