黑马程序员技术交流社区
标题:
枚举单例实现方式
[打印本页]
作者:
欧阳超
时间:
2011-10-10 10:19
标题:
枚举单例实现方式
枚举单例实现方式
作者:
石宗银
时间:
2011-10-10 10:28
。。每个枚举对象,就是一个单例
作者:
tintick
时间:
2011-10-10 10:43
public enum Singleton{ red } 表示只能创建一个枚举对象—red,这就是枚举实现单例了
作者:
庞金梁
时间:
2011-10-10 13:15
本帖最后由 庞金梁 于 2011-10-10 13:16 编辑
单例是日常开发中经常会碰到的一种模式
枚举单例实现:
public enum TrafficLam{
RED{
public TrafficLamp nextLights() {
// . . .
}
};
public abstract TrafficLamp nextLights();
}
作者:
王家虎
时间:
2011-10-10 13:40
枚举的功能就是限制对象的产生范围,枚举类规定了产生枚举对象的个数,这些对象就是枚举中的元素。枚举类的构造方法必须是私有的,因为只有构造方法是私有的才可以保证在类的外部不能够再创建枚举类的对象了。枚举也是一个特殊的类。
如果枚举中只有一个元素,那么就可以使用单例设计模式了,因为单例就是限定类只能产生一个对象,且构造方法是私有的。
作者:
李文肖
时间:
2011-10-10 14:52
单例是日常开发中经常会碰到的一种模枚举 使用式,最常见的写法如下所示:
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 及以上版本才能达到单例的效果的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2