89.希望有且只有一个类的实例返回给调用程序时,就可以使用单元素模式(Singleton Pattern)。这种类的声明如下:
class TheOnlyInstance
{
public:
static TheOnlyInstance* GetTheOnlyInstance();
//other methods
protected:
TheOnlyInstance(){}
private:
//private data
};
通过将TheOnlyInstance构造函数声明为protected,并省略公有构造函数,可以防止局部实例被创建:
int main()
{
TheOnlyInstance noCanDo;//not allowed
只有通过公有静态方法GetTheOnlyInstance来访问。该方法被调用时,将返回类TheOnlyInstance的实例。
TheOnlyInstance* TheOnlyInstance::GetTheOnlyInstance()
{
static TheOnlyInstance objTheOnlyInstance;
return &objTheOnlyInstance;
}