《Effective java》读书记录-第3条-用私有构造器或者枚举类型强化Singleton属性
来源:互联网 发布:沈阳网络优化11sem 编辑:程序博客网 时间:2024/05/18 01:00
Singleton指仅仅被实例化一次的类。Singleton通常被用来代表那些本质上唯一的系统组件。使类成为Singleton会使它的客户端测试变得十分困难,因为无法给Singleton替换模拟实现,除非它实现一个充当其类型的接口。
Java1.5之前,实现Singleton有两种方法,这两种方法都是私有化构造器,并导出公有的静态成员,如下两端代码。
public class Elvis1 { public static final Elvis1 INSTANCE=new Elvis1(); private Elvis1(){} public static Elvis1 getInstance(){ return INSTANCE; } public void leaveTheBuilding(){}}
public class Elvis2 { public static final Elvis2 INSTANCE=new Elvis2(); private Elvis2(){} public static Elvis2 getInstance(){ return INSTANCE; } public void leaveTheBuilding(){} //readResovle method to preserve singleton property private Object readResolve(){ //Return the one true Elvis and let the garbage collector //take care of the Elvis impersonator. return INSTANCE; }}
public enum Elvis3 { INSTANCE; public void leaveTheBuilding(){}}
这种方式在功能上与公有域方法相近,但是它更加简洁,无偿地提供了序列化机制,绝对防止多次实例化,即使在面对复杂的序列化或者反射攻击的时候。
单元素的枚举类型已成为实现Singleton的最佳方法。
0 0
- 《Effective java》读书记录-第3条-用私有构造器或者枚举类型强化Singleton属性
- 《effective java》读书札记第三条用私有构造器或者枚举类型强化Singleton属性
- Effective Java 学习 第三条 用私有构造器或者枚举类型强化Singleton属性
- Effective Java (3) - 用私有构造器或者枚举类型强化Singleton属性
- effective java(3) 之用私有构造器或者枚举类型强化Singleton属性
- Effective java第三条:使用私有构造器或者枚举类型强化Singleton属性
- 第3条:用私有构造器或者枚举类型强化Singleton属性
- EffectiveJava 第3条 :用私有构造器或者枚举类型强化Singleton属性
- 第3条:用私有构造器或者枚举类型强化Singleton属性
- 第3条:用私有构造器或者枚举类型强化Singleton属性
- 第3条:用私有构造器或者枚举类型强化Singleton属性
- 第3条:用私有构造器或者枚举类型强化Singleton属性
- 第3条:用私有构造器或者枚举类型强化Singleton属性
- 第3条:用私有构造器或者枚举类型强化Singleton属性
- 第3条:用私有构造器或者枚举类型强化Singleton属性
- 第3条:用私有构造器或者枚举类型强化Singleton属性
- 用私有构造器或者枚举类型强化singleton属性——Effective Java 读书笔记
- Effective Java 2.3——用私有构造器或者枚举类型强化Singleton属性
- 键盘设置
- 函数模板与类模板的简单实例
- java文件下载的文件名乱码问题的解决
- ubuntu14.04(linux)字符界面下openfire安装配置
- 归并排序(Mergesort)
- 《Effective java》读书记录-第3条-用私有构造器或者枚举类型强化Singleton属性
- leetcode刷题日记——Power of Two
- oracle 反向排序
- oc基础总结二 线程和进程
- 欢迎使用CSDN-markdown编辑器
- MP4文件格式详解——结构概述
- Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for pr
- Home+work
- asp.net dataset 判断是否为空