人妻丰满熟妇AV无码片,岛国AV无码免费无禁网站,丰满岳乱妇一区二区三区,男插女高潮一区二区

c++ 單例模式

技術(shù)分享 2019-10-01 00:00:00
在單例模式構(gòu)造函數(shù)是可以private的,用靜態(tài)成員函數(shù)GetInstance來獲得實(shí)例。
單例模式:作為對(duì)象的創(chuàng)建模式,單例模式確保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。這個(gè)類稱為單例類。
  單例模式的要點(diǎn)有三個(gè);一是某個(gè)類只能有一個(gè)實(shí)例;二是它必須自行創(chuàng)建這個(gè)實(shí)例;三是它必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。在下面的對(duì)象圖中,有一個(gè)"單例對(duì)象",而"客戶甲"、"客戶乙" 和"客戶丙"是單例對(duì)象的三個(gè)客戶對(duì)象。可以看到,所有的客戶對(duì)象共享一個(gè)單例對(duì)象。而且從單例對(duì)象到自身的連接線可以看出,單例對(duì)象持有對(duì)自己的引用。
一些資源管理器常常設(shè)計(jì)成單例模式。讓一個(gè)類產(chǎn)生同一個(gè)對(duì)象對(duì)客戶端服務(wù)的時(shí)候,比如管理數(shù)據(jù)庫連接,管理文件IO等,這時(shí)我們就要使用到單例模式。下面是該模式的C++實(shí)現(xiàn)(注澤說明)

給個(gè)例子:
#include
using namespace std;
//單例類的C++實(shí)現(xiàn)
class Singleton
{
private:
Singleton();//注意:構(gòu)造方法私有
virtual ~Singleton();
static Singleton* instance;//惟一實(shí)例
int var;//成員變量(用于測試)
public:
static Singleton* GetInstance();//工廠方法(用來獲得實(shí)例)
int getVar();//獲得var的值
void setVar(int);//設(shè)置var的值
};
//構(gòu)造方法實(shí)現(xiàn)
Singleton::Singleton()
{
this->var = 20;
cout<<"Singleton Constructor"<}
Singleton::~Singleton()
{
delete instance;
}
//初始化靜態(tài)成員
Singleton* Singleton::instance=new Singleton();
Singleton* Singleton::GetInstance()
{
return instance;
}
//seter && getter含數(shù)
int Singleton::getVar()
{
return this->var;
}
void Singleton::setVar(int var)
{
this->var = var;
}
//main
int main(int argc, char* argv)
{
Singleton *ton1 = Singleton::GetInstance();
Singleton *ton2 = Singleton::GetInstance();
cout<<"ton1 var = "<getVar()<ton1->setVar(150);
cout<<"ton2 var = "<getVar()<
return 0;
}
咨詢小瓶科技
咨詢我們
頂部