设计一个类,只能实现该类的一个实例!
1 使用C++实现一个懒加载的单例
class Singleton{
public:
static Singleton GetInstance(){
if(instance==NULL)
instance=new Singleton();
return instance;
}
private:
Singleton(){}; //默认构造函数
static Singleton *instance;
}
2 使用java实现一个懒加载的单例
class Singleton
{
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance==NULL)
instance =new Singleton();
return instance;
}
}
3 使用java实现一个饿汉式加载
class Singleton
{
private Singleton instance=new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
}
总结:
(1)懒汉式加载只能在单线程的时候工作,当多个线程运行到判断instance是否为空时,会创建多个实例,此时不满足单例模式。
(2)可以加上一个同步锁,在判断instance是否为空之前,加锁。