#include <iostream>
#include <List>
using namespace std;
class Singleton
{
public:
static void Register(const char* name, Singleton*);
static Singleton* getInstance();
void say();
protected:
Singleton();
static Singleton* Lookup(const char* name);
private:
int i;
static Singleton* _singleton;
//static List<NameSingletonPair>* _registry;
};
Singleton* Singleton::_singleton=NULL;
Singleton::Singleton()
{
i=0;
std::cout<<endl<<"singleton constructor"<<endl;
}
void Singleton::say()
{
cout<<"hahge-";
i++;
cout<<i;
}
Singleton* Singleton::getInstance()
{
if(NULL==_singleton) {
_singleton = new Singleton();
}
return _singleton;
}
int main()
{
Singleton* psin=Singleton::getInstance();//直接调用类的静态方法,调用该方法时static才会实例为全局数据区的一个值
psin->say();
Singleton* psin2=Singleton::getInstance();
psin2->say();
return 0;
}