+ -
当前位置:首页 → 问答吧 → 请高人给一个单例模式,感激不尽!

请高人给一个单例模式,感激不尽!

时间:2011-12-26

来源:互联网

请高人给一个单例模式的代码,感激不尽!

作者: tianlang279500   发布时间: 2011-12-26

是指单实例吗?看看这个:
C/C++ code
#include <iostream>
using namespace std;
//单例类的C++实现
class Singleton
{
private:
    Singleton();//注意:构造方法私有
    virtual ~Singleton();
    static Singleton* instance;//惟一实例
    int var;//成员变量(用于测试)
public:
    static Singleton* GetInstance();//工厂方法(用来获得实例)
    int getVar();//获得var的值
    void setVar(int);//设置var的值
};
//构造方法实现
Singleton::Singleton()
{
    this->var = 20;
    cout<<"Singleton Constructor"<<endl;
}
Singleton::~Singleton()
{
    delete instance;
}
//初始化静态成员
Singleton* Singleton::instance=new Singleton();
Singleton* Singleton::GetInstance()
{
    return instance;
}
//seter && getter含数
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 = "<<ton1->getVar()<<endl;
    ton1->setVar(150);
    cout<<"ton2 var = "<<ton2->getVar()<<endl;
    return 0;
}

作者: riyueming184   发布时间: 2011-12-26

#include   <iostream>
using   namespace   std;

class   CSingleton
{
private:
        static   CSingleton   *m_Instance;
        CSingleton()
{}
        CSingleton(const   CSingleton&   csi);
        virtual   ~CSingleton()
        {
                delete   m_Instance;
        }
       
public:
        static   CSingleton*   GetInstance();

        //用于生成的对象是否为同一个,即单例
        void   test()
        {
cout   < <   "Address   of   m_Instance   is   : "   < <   &m_Instance   < <   endl;
        }
};

CSingleton*   CSingleton::m_Instance   =   NULL;
CSingleton*   CSingleton::GetInstance()
{
        if(NULL   ==   m_Instance)
        {
                m_Instance   =   new   CSingleton();
        }
return   m_Instance;
}

int   main()
{
        CSingleton   *single   =   CSingleton::GetInstance();
        single-> test();

        CSingleton   *single2   =   CSingleton::GetInstance();
        single2-> test();

return   0;
}

作者: ArvonZhang   发布时间: 2011-12-26