Skip to content

Latest commit

 

History

History
27 lines (21 loc) · 1.23 KB

File metadata and controls

27 lines (21 loc) · 1.23 KB

单例模式 singleton

动机

对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。

定义

单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。

结构

单例模式包含如下角色:

  • Singleton单例
classDiagram

class Singleton{
  -instance Singleton
  -Singleton() void
  +getInstance() Singleton
  +singletonOperation() void
}
Loading

适用环境

  • 系统只需要一个实例对象,如系统要求提供一个唯一的序列号生成器,或者需要考虑资源消耗太大而只允许创建一个对象。
  • 客户调用类的单个实例只允许使用一个公共访问点,除了该公共访问点,不能通过其他途径访问该实例。
  • 在一个系统中要求一个类只有一个实例时才应当使用单例模式。反过来,如果一个类可以有几个实例共存,就需要对单例模式进行改进,使之成为多例模式