设计模式之三 ------Singleton
问题:假设我们电脑只有一个打印机,我们用一个类来管理打印机资源,如果像一般的类一样,使用者可以创建多个类的实例,那么势必会造成系统资源的大量浪费,为了达到节约资源的目的,我们需要寻找一个新的方法;
解决方案:
我们在类内创建一个静态的本类指针,初始化的时候为其赋值,以后使用者用的时候,直接放回这个指针就行了;由于使用者调用的是静态方法,不需要类的实例化;
解决方案:
#include<iostream>
using namespace std;
class Singleton{
public:
static Singleton * GetInstance()
{
cout<<"Singleton返回"<<endl;
if(instance !=NULL)
return instance;
else
{
instance=new Singleton();
return instance;
}
}
protected:
Singleton(){}//为了让子类调用,外部却不能调用
private:
static Singleton * instance;
};
Singleton * Singleton::instance=new Singleton;
void main()
{
Singleton * instance=Singleton::GetInstance();
}