- 饿汉式
public class Singleton{
//类加载时就初始化
private static final Singleton INSTANCE = new Singleton();
//构造方法必须私有
private Singleton(){}
//提供获取对象的方法
public static Singleton getInstance(){
return INSTANCE;
}
}
- 静态内部类
public class Singleton {
//私有静态内部类
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
//私有构造
private Singleton (){}
//获取对象的方法
public static final Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
- 双重检查
public class Singleton {
private volatile static Singleton instance;
private Singleton (){
}
public static Singleton getInstance() {
if (instance== null) {
synchronized (Singleton.class) {
if (instance== null) {
instance= new Singleton();
}
}
}
return singleton;
}
}
- 枚举
public enum Singleton {
INSTANCE;
public void doSomeThing() {
}
}