设计模式之单例模式

单例模式

目的:

Ensure a class only has one instance, and provide a global point of access to it.

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

C++实现 

在类中,定义一个私有静态成员对象;将构造函数也定义为私有的,保证类只有一个实现;提供一个公有静态成员函数,用来返回类内唯一的构造实例。

示例代码

//Singleton.h

#include <iostream>
using namespace std;

class Singleton
{
private:
    static Singleton *minstance;
    Singleton();
public:
    static Singleton *getInstance();
};

//Singleton.cpp

Singleton::Singleton()
{
    cout<<"private construct singleton"<<endl;
}

Singleton* Singleton::minstance =NULL; //必须在此处声明,否则报错

Singleton * Singleton::getInstance()
{
    if (minstance==NULL)
    {
        minstance=new Singleton();
    }
    
    return minstance;
}

//main.cpp
#include "Singleton.h"

void main()
{
    Singleton* singleton1 = Singleton::getInstance();
    Singleton* singleton2 = Singleton::getInstance();

    if (singleton1 == singleton2)
        fprintf(stderr,"singleton1 = singleton2
");


    return;

}
View Code

参考资料

戏说Singleton模式

C++中的单例模式

3 C++设计模式--单例模式

 

原文地址:https://www.cnblogs.com/gjianw217/p/3870711.html