在我的设计模式的一篇博客中写了DCL 双重检查的单例模式,这里再写一种使用静态内部类实现的懒汉单例模式。
/**
* 使用静态内部类实现懒汉单例模式
* 这种方式解决了线程安全和其他单例写法繁琐的问题
* 只有在调用getInstance的时候才会去加载内部类且初始化单例
*/
public class Singleton {
private Singleton(){};
private static class LazyHolder{
private static final Singleton INSTANCE = new Singleton();
}
public static final Singleton getInstance(){
return LazyHolder.INSTANCE;
}
}
这种方式也是相当的经典。