当前位置: 技术问答>java相关
单件模式如何使用?
来源: 互联网 发布时间:2017-04-02
本文导语: 我想把一个单件类的对象的实例化延迟到某一个函数中 ,可以这样子做吗? class EagerSingleton { private:static EagerSingleton* OnlyInstance; private:EagerSingleton(){}; public:static EagerSingleton* GetInstance() { if(OnlyInstance==NULL) ...
我想把一个单件类的对象的实例化延迟到某一个函数中 ,可以这样子做吗?
class EagerSingleton
{
private:static EagerSingleton* OnlyInstance;
private:EagerSingleton(){};
public:static EagerSingleton* GetInstance()
{
if(OnlyInstance==NULL)
{
OnlyInstance=new EagerSingleton;
}
return OnlyInstance;
};
};
EagerSingleton* EagerSingleton::OnlyInstance=NULL;
问题是我怎样才能决定什么时候实例化它呢
class EagerSingleton
{
private:static EagerSingleton* OnlyInstance;
private:EagerSingleton(){};
public:static EagerSingleton* GetInstance()
{
if(OnlyInstance==NULL)
{
OnlyInstance=new EagerSingleton;
}
return OnlyInstance;
};
};
EagerSingleton* EagerSingleton::OnlyInstance=NULL;
问题是我怎样才能决定什么时候实例化它呢
|
不管你什么时候实例化,都只有一个对象,就是OnlyInstance啊。
用GetInstance()方法就可以得到这个对象了
用GetInstance()方法就可以得到这个对象了
|
如果是1.1以上,最简单的做法如下,在类载入的时候就完成初始化,你那个做法会出问题,要双重检查。
class EagerSingleton
{
private static EagerSingleton* OnlyInstance=new EagerSingleton();
private EagerSingleton(){};
public static EagerSingleton GetInstance()
{
return OnlyInstance;
};
class EagerSingleton
{
private static EagerSingleton* OnlyInstance=new EagerSingleton();
private EagerSingleton(){};
public static EagerSingleton GetInstance()
{
return OnlyInstance;
};