3.5 SINGLETON(单例) — 对象创建型模式

1 意图

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

2 动机

对·一些类来说,只有一个实例是很重要的。虽然系统中可以由许多打印机,但却只应该有一个打印假脱机,只应该有一个文件系统和窗口管理器。一个数字滤波器只能有一个A/D转换器。
让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可
以被创建(通过截取创建新对象的请求),并且它可以提供一个访问该实例的方法。这就是Singleton模式。

3 适用性

在下面的情况下可以使用Singleton模式
- 当类只能有一个实例并且客户可以从任何一个访问点访问它时;
- 当这个唯一实例应该是通过子类化可扩展的,并且可以应该无需更改代码就能使用一个扩展的实例时。

4 结构
3.5 SINGLETON(单例) — 对象创建型模式_第1张图片
image.png
5 参与者

SingleTon——定义一个Instance操作,运行客户访问它的唯一实例

6 协作

客户只能通过Singleton的Instance操作访问一个singleton的实例

7 效果

Singleton优点:

  • 1 对唯一实例的受控访问;
  • 2 缩小名空间
  • 3 允许对操作和表示的精化:Singleton类可以有子类,而且用这个扩展类的实例来配置一个应用是很容易的。你可以用你所需要的类的实例在运行时刻配置应用。
  • 4 允许可变数目的实例
  • 5 比类操作更灵活
8 实现

下面是使用Singleton模式需要考虑的问题:

  • 1 保证唯一一个实例;
  • 2 创建Singleton类的子类
9 代码示例

github地址

你可能感兴趣的:(3.5 SINGLETON(单例) — 对象创建型模式)