单例模式
模式描述
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
优点
- 对唯一实例的受控访问;
- 缩小名字空间;
- 允许对操作和表示的精华;
- 比类操作更灵活;
缺点
应用场景
- 处理资源访问冲突;
- 表示全局唯一类;
DATE | CHANGELOG |
---|---|
2023年5月8日 | 初始化 |
UML 类图
classDiagram
class Singleton {
getInstance() Singleton
}
Singleton <-- Client
参与者
Singleton
- 定义一个 getInstance 操作;
Client 类
客户端。
数据流
- Client 只能通过 getInstance 操作获取实例对象。
相关模式
- 很多模式可以用单例模式来实现;
补充
- 构造函数需要是 private 访问权限的,这样才能避免外部通过 new 创建实例;
- 考虑对象创建时的线程安全问题;
- 考虑是否支持延迟加载;
- 考虑 getInstance() 性能是否高(是否加锁)。