首页 > 代码库 > 单例模式变体
单例模式变体
/*
*饿汉模式
*/
public class EagerSingleton {
private static EagerSingleton eagerSingleton=new EagerSingleton();
private EagerSingleton() {
super();
}
public static EagerSingleton getInstance(){
return eagerSingleton;
}
}
/*
*懒汉模式
*优点: 不使用就不创建, 节省内存空间。
* 缺点: synchronized 对方法的影响是永久性的。 多线程环境下, getInstance性能很低。
* /
public class LazySingleton {
private static LazySingleton lazySingleton=null;
private LazySingleton() {
super();
}
public static synchronized LazySingleton getInstance(){
if(lazySingleton==null){
lazySingleton=new LazySingleton();
}
return lazySingleton;
}
}
/*
* 优点: 1. lazy
* 2. 当创建对象时, 如果多线程进入 , 没关系。 静态属性的初始化过程 天生具备 线程安全!!
*/
public class StaticSingeton {
private StaticSingeton() {
super();
}
private static class Temp {
public static StaticSingeton ss = new StaticSingeton();
}
public static StaticSingeton getInstance(){
return Temp.ss;
}
}