设计模式_单例模式

来源:互联网 发布:淘宝开店拍照总是失败 编辑:程序博客网 时间:2024/05/21 14:53
#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;}

0 0