当我们需要只有一个类的实例返回给调用程序时,就可以使用单件设计模式(Singletom pattern).这种类的声明如下:
class TheOnlyInstance
{
public:
static TheOnlyInstance * GetTheOnlyInstance();
protected:
TheOnlyInstance(){}
private:
//
} ;
//只能通过公有静态方法来访问
TheOnlyInstance* TheOnlyInstance::GetTheOnlyInstance()
{
static TheOnlyInstance objTheOnlyInstance;
return &objTheOnlyInstance;
}
//错误的用法
int main()
{
TheOnlyInstance noCanDo; //因为构造函是数保护成员,所以这种声明是错误的。
}
//说明
GetTheOnlyInstance方法仅在第一次被调用时,创建TheOnlyInstance类的一个实例。以这种方式构造的静态对象一直有效,直到程序终止,此时这种静态对象将自动释放。要检索指向这个类的唯一实例的指针,只需要调用静态方法GetTheOnlyInstance。
TheOnlyInstance * pTheOnlyInstance = TheOnlyInstance::GetTheOnlyInstance();