个人常用的有 DCL 和静态内部类实现的单例。
分别记录一下。
DCL
public class DataHelper {
private static volatile DataHelper instance;
private DataHelper() {
}
public static DataHelper getDefault() {
if (instance == null) {
synchronized (DataHelper.class) {
if (instance == null) {
instance = new DataHelper();
}
}
}
return instance;
}
}
静态内部类方式
public class DataHelper {
private DataHelper() {
}
public static DataHelper getInstance() {
return SingletonHolder.instance;
}
private static class SingletonHolder {
private static DataHelper instance = new DataHelper();
}
}