应用场景
- 有且仅有一个对象
- 需要生成唯一序列号
- 公共访问点,或共享数据
- 对象占用较多资源,多个实例会影响性能
- 工具类
优点
- 减少对象频繁实例化,销毁带来的开销
- 减少对依赖资源的频繁创建
- 避免过多对象对资源的过多占用
- 使用方便,全局调用
缺点
- 没有实现接口,很难扩展。
只能通过修改来添加新功能 - 对测试不利
因为没有实现接口,没办法虚拟对象
注意
- 线程安全
a. 通过静态初始化代码块,或者声明静态变量时就初始化
b. 使用同步方法 - 被VM当垃圾回收
扩展
- 有上限的多例模式
a. 解决单例性能问题
b. 提高响应速度