使用枚举构造Singleton对象
来源:互联网 发布:华策招聘 知乎 编辑:程序博客网 时间:2024/05/16 05:23
单例的常见写法:
私有构造器与静态成员
public class SimpleSingletonY { public static final SimpleSingletonY INSTANCE = new SimpleSingletonY(); private SimpleSingletonY() { }}
静态工厂
public class SimpleSingletonX { private static final SimpleSingletonX INSTANCE = new SimpleSingletonX(); private SimpleSingletonX() { } public static SimpleSingletonX getInstance() { return INSTANCE; }}
Double Check与懒加载
public class DoubleCheckSingleton { private static volatile DoubleCheckSingleton INSTANCE = null; private DoubleCheckSingleton() {} public static DoubleCheckSingleton getInstance() { if (INSTANCE == null) { synchronized (DoubleCheckSingleton.class) { if (INSTANCE == null) { INSTANCE = new DoubleCheckSingleton(); } } } return INSTANCE; }}
懒加载可以避免JVM在加载Singleton这个类时对INSTANCE初始化操作(如果new的过程很耗时的话,应用程序启动的会很慢,降低体验的友好性,只在使用的时候进行初始化操作。
另一种安全高效的懒加载实现方式
public class StaticLazyLoadSingleton { private StaticLazyLoadSingleton() {} private static class LazyHolder { static final StaticLazyLoadSingleton INSTANCE = new StaticLazyLoadSingleton(); } public static StaticLazyLoadSingleton getInstance() { return LazyHolder.INSTANCE; }}
使用枚举
public enum EnumSingleton { INSTANCE; int value; public int getValue() { return value; } public void setValue(int value) { this.value = value; }}
https://en.wikipedia.org/wiki/Initialization-on-demand_holder_idiom
https://dzone.com/articles/java-singletons-using-enum?fromrel=true
阅读全文
0 0
- 使用枚举构造Singleton对象
- Effective java第三条:使用私有构造器或者枚举类型强化Singleton属性
- Effective Java (3) 使用似有构造器或者枚举强化Singleton属性
- EffectiveJava(3)使用是由构造器或枚举类型强化singleton
- 【Effective Java】Ch2_创建销毁对象:Item3_通过私有构造函数或枚举类型来强化Singleton属性
- 第3条 创建与销毁对象——用私有构造器或者枚举类型强化Singleton属性
- Effective Java 创建和销毁对象 3.用私用构造器或者枚举类型强化Singleton属性
- 用私有构造器或者枚举类型强化 Singleton属性
- EffectiveJava-用私有构造器或者枚举强化Singleton属性
- 用私有构造器或者枚举类型强化Singleton属性
- 用私有构造器或者枚举类型强化Singleton属性
- 用私有构造器或者枚举类型强化Singleton属性。
- 用私有构造器或者枚举来强化Singleton属性
- 用私有构造器或枚举类型强化Singleton属性
- 使用私有构造函数强化singleton属性
- 以private构造器实现对象的singleton
- 第3条:用私有构造器或者枚举类型强化Singleton属性
- 03、用私有构造器或者枚举类型强化Singleton属性
- 创建登陆界面
- java之面向对象
- opencv+ Visual Studio 2013 环境搭建
- python basemap 中一些函数括号内值的含义与用法
- [SHOI2008]堵塞的交通traffic
- 使用枚举构造Singleton对象
- java详解 --- 类与对象以及封装
- quartz定时器
- 购票系统
- java 多线程-信号量 Semaphore
- CSS-光标属性
- 深度学习框架哪家强?MXNet称霸CNN、RNN和情感分析,TensorFlow仅擅长推断特征提取
- 2017 12 05
- 大数据学习36:spark-core 和 spark-sql 学习