设计模式是编程的重点,往往在面试时都会考查,而单例模式是最为简单、最为常见、也最该掌握的模式。所以面试时对设计模式的考查考的最多的就是单例模式。
其中,Singleton类型的构造函数必须是protected的,保证该类型不可被实例化,静态成员函数Instance则用来实例化该类型,因为该函数是静态,所以每次调用都是同一个实例,这就保证了Singleton类型只能被实例化一次。
下面我们就来看看单例模式如何实现(C++代码):
#include<iostream>
using namespace std;
class Singleton {
public:
static Singleton* Instance();
protected:
Singleton();
private:
static Singleton* _instance;
};
Singleton* Singleton::_instance=0;
Singleton::Singleton()
{
cout<<"Singleton..."<<endl;
};
Singleton*Singleton::Instance()
{
if (_instance==0)
{
_instance=new Singleton();
}
return _instance;
}
int main(int argc,char* argv[])
{
Singleton* sgn=Singleton::Instance();
return 0;
}
其中,Singleton类型的构造函数必须是protected的,保证该类型不可被实例化,静态成员函数Instance则用来实例化该类型,因为该函数是静态,所以每次调用都是同一个实例,这就保证了Singleton类型只能被实例化一次。