单例模式
目的:
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; }
参考资料