确保一个类只有一个实例,并提供一个全局访问点。
这个最经典的就是Spring了,在Spring中创建单例太简单了,这里不介绍Spring。
- 构造函数私有化
- 提供全局访问点
懒汉式
class Single {
public final static Single INSTANCE = new Single();
private Single(){}
}
饿汉式
双重检验锁
public class Single {
private static volatile Single INSTACNE;
private Single(){}
public static Single getInstance(){
if (INSTACNE == null){
synchronized (Single.class){
if (INSTACNE == null){
INSTACNE = new Single();
}
}
}
return instance;
}
}
类占位符 (推荐)
public class Single {
private Single(){}
private static class SingleInstance{
private final static Single INSTACNE = new Single();
}
public static Single getInstance(){
return SingleInstance.INSTACNE;
}
}