单例模式的核心是有且仅有一个对象实例,其本质是私有构造函数。由于构造函数是私有的,外部代码无法访问该类的内部代码,所以只能通过提供接口的形式来获取该类的实例。类的提供者,可以在类内部对实例化的对象进行控制,当然,这里不涉及到多线程编程下的单例问题。
单例模式应该是设计模式中最简单的一个,步骤如下:
1、设计一个类,将其构造函数的访问权限声明为private
class MyClass
{
private:MyClass(){}
}
2、提供一个供外部代码获取类实例的函数
class MyClass
{
private:MyClass* m_pInstance;
private:MyClass(){}
public:static MyClass* GetInstance()
{
if (m_pInstance==0) { m_pInstance = new MyClass(); return m_pInstance;}
}
public: void SayHello(){std::count<<"hello, you."<<std::endl;}
}
3、在外部代码中调用类的方法
int main()
{
MyClass *pMyClass = MyClass::GetInstance();
pMyClass->SayHello();//调用
}