C++知识点:单例模式的简单实现

单例模式是最常见,也是使用最广泛的一种设计模式,其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。

单例模式的实现方法有很多种,本文只给出一个最简单的实现,如下:

(1) 使用一个类的私有静态指针指向该类的唯一一个实例
(2) 使用一个共有的静态方法获取该实例。

#include "stdafx.h"
#include <iostream>
using namespace std;
class Singleton
{
public:
    ~Singleton()
    {
        if (singleton!=NULL)
        {
            delete singleton;
        }
    }
    static Singleton* getSingleton();//全局访问点
private:
    Singleton(){
    }
    static Singleton* singleton;//指向该类唯一实例的一个静态指针
};
//静态成员必须在类外初始化
Singleton * Singleton::singleton = NULL;
Singleton* Singleton::getSingleton(){
    if (singleton == NULL)//如果该唯一实例不存在,就创建一个
    {
        singleton = new Singleton();
    }
    else cout<<"已存在一个实例"<<endl;
    return singleton;
}

调用和测试

int _tmain(int argc, _TCHAR* argv[])
{
    Singleton* mySingleton = Singleton::getSingleton();//获得了该类的唯一一个实例
    Singleton* mySingleton2 = Singleton::getSingleton();//输出“已存在一个实例”,此时mySingleton和mySingleton2同指向该类的唯一实例
    return 0;
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/43d9215e5e9df1fb3dcb9400a9b50b11.html