一、Singleton 表明那些本质上惟一的系统组件、增长客户端调试难度性能
二、Singleton 实现方法1:调试
- 构造器保持私有
- 导出公有静态成员
- 享有特权的的客户端,采用AccessibleObject.setAccessible(),经过反射机制调用 私有构造器
- 解决上述问题:能够修改构造器,建立第二个对象抛异常
好处是:对象

三、Singleton 实现方法 2:接口
- 构造器保持私有
- 导出公有静态成员
- 享有特权的的客户端,采用AccessibleObject.setAccessible(),经过反射机制调用 私有构造器
好处是:序列化
- JVM都能实现,静态工厂调用内联化,无性能劣势
- 更加灵活,易于修改
-

四、可序列化(Serializable)反射
- 仅仅实现接口是不够的
- 必须说明全部实例域都是瞬时的(transient)
- 必须提供readResolve() 方法
- 不然,每次反序列化时都会建立新实例(以下,返回同一个实例)

五、Singleton 实现方法 3:方法
- 只包含单个元素的枚举类型
- 实现 Singleton 最佳方法
- 更加简洁
- 无偿提供序列化机制
- 绝对防止屡次实例化
