1、饿汉式(静态常量)
class Singleton{
private Singleton(){}
private static final Singleton instance = new Singleton();
public static Singleton getInstance(){
return instance;
}
}
2、懒汉式(双重检查)
class Singleton{
private Singleton(){}
private static volatile Singleton instance;
public static Singleton getInstance(){
if(instance == null){
synchronized(Singleton.class){
if(instance == null){
instance = new Singleton();
}
}
}
return instance;
}
}
3、静态内部类
class Singleton{
private Singleton(){}
private static class SingletonInstance{
private static final Singleton instance = new Singleton();
}
public static synchronized Singleton getInstance(){
return SingletonInstance.instance;
}
}
4、枚举法
enum Singleton{
INSTANCE;
public void sayHello(){
System.out.println("hello, world");
}
}