单例是日常开发中经常会碰到的一种模枚举 使用式,最常见的写法如下所示:
public class Singleton {
private Singleton() {}
private static final class Holder {
static final Singleton instance = new Singleton();
}
pubjava 枚举 使用方法lic static Singleton getInstance() {
return Holder.instance;
}
}
这样写不仅达到了java 枚举类型使用单例的效果,而且还是延迟加载,至于为什么不明白的童鞋可以 google 或 百度一下。( 这称为 lazy initialization holder class 模式 )
其实使用枚举可以很容易地实现单例。
public enum Singleton {
INSTANCE {
public void someMethod() {
// . . .
}
};
protected abstract void someMjava 用类实现枚举ethod();
}
枚举类型 INSTANCE 单例模式的实现就是一个单例,类型为 Singleton。
注:双检查锁只有在 jdk 1.5 及以上版本才能达到单例的效果的。 |