歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C++知識點:單例模式的簡單實現

單例模式是最常見,也是使用最廣泛的一種設計模式,其意圖是保證一個類僅有一個實例,並提供一個訪問它的全局訪問點,該實例被所有程序模塊共享。

單例模式的實現方法有很多種,本文只給出一個最簡單的實現,如下:

(1) 使用一個類的私有靜態指針指向該類的唯一一個實例
(2) 使用一個共有的靜態方法獲取該實例。

#include "stdafx.h"
#include <iostream>
using namespace std;
class Singleton
{
public:
    ~Singleton()
    {
        if (singleton!=NULL)
        {
            delete singleton;
        }
    }
    static Singleton* getSingleton();//全局訪問點
private:
    Singleton(){
    }
    static Singleton* singleton;//指向該類唯一實例的一個靜態指針
};
//靜態成員必須在類外初始化
Singleton * Singleton::singleton = NULL;
Singleton* Singleton::getSingleton(){
    if (singleton == NULL)//如果該唯一實例不存在,就創建一個
    {
        singleton = new Singleton();
    }
    else cout<<"已存在一個實例"<<endl;
    return singleton;
}

調用和測試

int _tmain(int argc, _TCHAR* argv[])
{
    Singleton* mySingleton = Singleton::getSingleton();//獲得了該類的唯一一個實例
    Singleton* mySingleton2 = Singleton::getSingleton();//輸出“已存在一個實例”,此時mySingleton和mySingleton2同指向該類的唯一實例
    return 0;
}

Copyright © Linux教程網 All Rights Reserved