歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++知識點:單例模式的簡單實現

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

日期:2017/3/1 9:12:07   编辑:Linux編程

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

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

(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