目的
使得类的一个对象成为该类系统中唯一实例,一个类有且只有一个实例,并且自行实例化向整个系统提供
实现
- 提供私有的构造方法
- 含有一个该类的静态私有成员
- 提供一个静态的公有方法用于创建、获取私有对象
实现方案
- 饿汉法
对象创建过程中实例化,创建实例的时候直接初始化 - 懒汉法
静态公有方法中实例化
对象创建过程中实例化,类内实例对象创建时并不直接初始化,直到第一次调用get方法时,才完成初始化操作
单例模式使用场景
优点
- 在内存中只有一个对象,节省内存空间
- 避免频繁的创建销毁对象,提供性能
- 避免对共享资源的多重占用
缺点 - 扩展比较困难
- 如果实例化后的对象长期不利用,系统将默认为垃圾进行回收,造成对象状态丢失
使用场景 - 创建对象时占用资源过多,但同时又需要用到该类对象
- 对系统资源要求统一读写,如读写配置信息
- 当多个实例存在可能引起程序逻辑错误,如1号码生成器