定义
保证一个类仅有一个实例,并提供一个全局访问点;
适用场景
- 想确定任何情况下都绝对只有一个实例;
优点
- 在内存里只有一个实例,减少内存开销;
- 可以避免对资源的多重占用;
- 设置全局访问点,严格控制访问;
缺点
- 没有接口,扩展困难;
重点
- 私有构造器;
- 线程安全;
- 延迟加载;
- 序列化和反序列化的安全;
- 防止反射攻击;
- Double Check;
- 静态内部类的实现方案(基于类初始化的延迟加载解决方案);
实用技能
- 反编译;
- 内存原理;
- 多线程Debug;
单例相关设计模式
- 单例模式和工厂模式;
- 单例模式和享元模式;