public class LazySingleton {
private static LazySingleton lazySingleton = null;
private LazySingleton(){}
public static synchronized LazySingleton getLazySingleton(){
if(lazySingleton == null){
lazySingleton = new LazySingleton();
}
return lazySingleton;
}
}
public class EagerSingleton {
private static EagerSingleton eagerSingleton = new EagerSingleton();
private EagerSingleton(){}
public static EagerSingleton getEagerSingleton(){
return eagerSingleton;
}
}
public class Singleton {
private static Singleton instance = null;
static Singleton getInstance(){
if(instance == null){
Singleton sc;
synchronized (Singleton.class){
sc = instance;
if(sc == null){
synchronized (Singleton.class){
if(sc == null){
sc = new Singleton();
}
}
}
}
}
return instance;
}
private Singleton(){}
}
public class SingletonDemo1 {
private static class SingletonClassInstance{
private static final SingletonDemo1 instance = new SingletonDemo1();
}
public static SingletonDemo1 getInstance(){
return SingletonClassInstance.instance;
}
private SingletonDemo1(){}
}
-
枚举实现单列模式 简单效率高,避免反射和反序列化的漏洞
public enum SingletonDemo2 {
INSTANCE;
//添加自己需要的操作
public void singletonOperation(){
}
}