#include<memory>
#include<iostream>
#include<string>
#include<cctype>
#include<algorithm>
#include<cmath>
#include<cstdio>
//#include"log.h"
using namespace std;
class SingleMode{
public:
static SingleMode* GetInstance(){
if (m_Instance == NULL){
// lock
if(m_Instance == NULL){
m_Instance = new SingleMode();
cout <<"now we creat new singlemode"<<endl;
}
//unlock
}
return m_Instance;
}
void DestoryInstance(){
if (m_Instance != NULL){
delete m_Instance;// = new SingleMode();
cout << "delete m_Instance"<<endl;
m_Instance = NULL;
}
}
virtual int get_test(){
return m_test;
}
private:
SingleMode(){
m_test = 10;
//m_Instance = NULL;
}
static SingleMode* m_Instance ;
int m_test;
class Garbo{
public:
~Garbo(){
if (SingleMode::m_Instance != NULL){
delete SingleMode::m_Instance;// = new SingleMode();
cout << "we well delete m_Instance"<<endl;
SingleMode::m_Instance = NULL;
}
}
};
static Garbo cGarbo;
};
//int SingleMode ::m_test = 20;
SingleMode *SingleMode ::m_Instance = NULL;
SingleMode::Garbo SingleMode::cGarbo;
int main(int argc, char *argv[])
{
SingleMode* singmo = SingleMode ::GetInstance ();
cout << singmo << endl;
cout << singmo->get_test () << endl ;
SingleMode* singmo1 = SingleMode ::GetInstance ();
cout << singmo1 << endl;
cout << singmo1->get_test () << endl ;
SingleMode* singmo2 = SingleMode ::GetInstance ();
cout << singmo2->get_test () << endl ;
// singmo->DestoryInstance ();
// singmo1->DestoryInstance ();
//cout << singmo1->get_test () << endl ;
return 0;
}
设计模式_单例模式
最新推荐文章于 2024-07-27 18:05:15 发布