【Effective Java】3.单例
来源:互联网 发布:软件开发进度表模板 编辑:程序博客网 时间:2024/06/05 16:09
传统单例
private 构造函数
最优单例实现:使用Enum
1.无需担心序列化
先说说传统单例,其如果序列化再反序列化产生的效果和构造一个新的对象差不多的。除非增加以下来阻止:
//readResolve to prevent another instance of Singleton private Object readResolve(){ return INSTANCE; }
而Enum自身源码中已实现防护代码:
/** * prevent default deserialization */ private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { throw new InvalidObjectException("can't deserialize enum"); } private void readObjectNoData() throws ObjectStreamException { throw new InvalidObjectException("can't deserialize enum"); }
2.无需double-check,方便安全
并且枚举创建的单例在JVM层面上也能保证实例是thread-safe的。
/*** Singleton pattern example using Java Enumj*/public enum EasySingleton{ INSTANCE;}
使用单例的时候用EasySingleton.INSTANCE 就可以了。
0 0
- 【Effective Java】3.单例
- effective java中的单例模式创建实例
- 《Effective Java》单例模式创建多对象
- Effective.Java 读书笔记(3)关于单例模式
- Effective Java Item3:使用私有构造方法或者枚举类型实现单例
- [Effective Java]第三话:使用私有构造方法或者枚举来实现单例
- Effective Java Item3:使用私有构造方法或者枚举类型实现单例(转自sunjavaduke)
- 防止反射攻击的单例模式-siglton -摘自《effective java》
- 用枚举增强单例模式的可靠性 - Effective Java 中文版第二版的读书心得(三)
- [Effective Java Distilled] Item 3 通过使用私有构造方法或者枚举类型来强化单例属性
- [Effective Java Distilled] Item 3 通过使用私有构造方法或者枚举类型来强化单例属性
- 学习日记之单例模式和Effective C++
- Effective Java
- Effective Java
- Effective Java
- Effective Java
- effective java
- effective java
- 8个值得关注的SQL-on-Hadoop框架
- brew install 报错Cowardly refusing to `sudo brew install
- javascript中,使用正则表达式实现'字符串截断翻页'
- 《Linux命令行与shell脚本》笔记--第12章:更多结构化命令
- 程序员的十种级别
- 【Effective Java】3.单例
- 《Linux命令行与shell脚本》笔记--第13章:处理用户输入
- 时钟
- 控制台异常打印java.lang.OutOfMemoryError: PermGen space
- C primer plus 第十一章 练习1:
- 史上最全最强SpringMVC详细示例实战教程
- 完成了UE4非常简单的第三视角圆球走动,适合像我一样刚接触UE4和蓝图的朋友学习!
- 关于动态库静态库的一些事
- mysql中创建字符集为utf-8的数据库