Singleton模式

保证一个类只能有一个实例,并提供一个访问它的负局访问点。

Singleton模式的工作方式是:拥有一个特定的方法,这个方法被手于实例化需要的对象。

 * 当这个方法被调用时,它检查了这个对象是否已经被 实例化。如果对象已经被实例化,这个方法仅仅返回这个对象的一个引用。如果对象尚未实例化,这个方法交对象实例化返回这个新的实例的引用。

*为了确保这是创建这个类型的对象的惟一途径,一般都是当构造函数定义为protected 或 private.

 

网上的代码:

#include<iostream>

using namespace std;

class Singleton
{
public:
    static Singleton * GetInstance()//通过静态公有函数获得该类的实例对象
    {
        if(m_pInstance==NULL)
        m_pInstance=new Singleton();
        return m_pInstance;
    }
private:
    Singleton(){}//构造函数私有化的目的是为了防止从别处实例化该类对象
    static Singleton * m_pInstance;
    class Garbo//删除Singleton实例的对象
    {
    public:
        ~Garbo()
        {
            if(Singleton::m_pInstance)
            {
                delete Singleton::m_pInstance;
            }
        }
    };
    static Garbo gb;//在程序结束时,系统会调用它的析构函数
};

Singleton * Singleton::m_pInstance=NULL;//初始化静态数据成员


int main()
{
    Singleton *sl=Singleton::GetInstance();
    return 0;
}
posted @ 2012-05-30 00:16  xyecho  阅读(354)  评论(0编辑  收藏  举报