单例模式

模式描述

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

优点

  1. 对唯一实例的受控访问;
  2. 缩小名字空间;
  3. 允许对操作和表示的精华;
  4. 比类操作更灵活;

缺点

应用场景

  1. 处理资源访问冲突;
  2. 表示全局唯一类;
DATE CHANGELOG
2023年5月8日 初始化

UML 类图

classDiagram
class Singleton {
	getInstance() Singleton
}

Singleton <-- Client

参与者

Singleton

  • 定义一个 getInstance 操作;

Client 类

客户端。

数据流

  1. Client 只能通过 getInstance 操作获取实例对象。

相关模式

  • 很多模式可以用单例模式来实现;

补充

  • 构造函数需要是 private 访问权限的,这样才能避免外部通过 new 创建实例;
  • 考虑对象创建时的线程安全问题;
  • 考虑是否支持延迟加载;
  • 考虑 getInstance() 性能是否高(是否加锁)。

示例代码

golang

java