1.懒汉模式
public class Singleton {
private static Singleton instance;
private Singleton() {
}
public static synchronized Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}
在代码中使用的 synchronized 是为了保证单例对象唯一性的。
2.Double Check Lock (DCL 双重检查锁定)
public class Singleton {
private static Singleton mInstance = null;
private Singleton() {
}
public void doSomething() {
System.out.println("do sth.");
}
public static Singleton getInstance() {
if (mInstance == null) {
synchronized (Singleton.class) {
if (mInstance == null) {
mInstance = new Singleton();
}
}
}
return mInstance;
}
}
3.静态内部类
public class Singleton {
private Singleton() {
}
public static Singleton getInstance() {
return SingletonHolder.sInstance;
}
public static class SingletonHolder {
private static final Singleton sInstance = new Singleton();
}
}