<strong>//第一种非延迟加载的单利模式</strong>
<strong>public class SingleInstance{
private SingleInstance(){};
private static final SingleInstance mSingleInstance=new SingleInstance();
public static SingleInstance getInstance()
{
return mSingleInstance;
}
}</strong>
<strong>//第二种 简单的同步延迟加载,效率相对较低
public class SingleInstance{
private SingleInstance(){};
private static SingleInstance mSingleInstance=null;
public static synchronized SingleInstance getInstance()
{
if (mSingleInstance==null)
mSingleInstance=new SingleInstance();
return mSingleInstance;
}
}</strong>
<strong>//第三种 双重延迟的加载
public class SingleInstance{
private SingleInstance(){};
private static volatile SingleInstance mSingleInstance=null;
public static SingleInstance getInstance()
{
if (mSingleInstance==null)
{
synchronized (SingleInstance.class)
{
if (mSingleInstance==null)
{
mSingleInstance=new SingleInstance();
}
}
}
return mSingleInstance;
}
}</strong>
<strong>
//类加载器的延迟加载的单例模式
public class SingleInstance{
private static class HolderClass{
static final SingleInstance mSingleInstance=new SingleInstance();
}
public static SingleInstance getInstance()
{
return HolderClass.mSingleInstance;
}
}
</strong>