Skip to content

概述

确保一个类只有一个实例,并提供一个全局访问点

特性

  1. 保证该类只有一个实例
  2. 要获取这个实例,只能通过该类获取

什么时候情况下用

只需要一个实例的时候,比如消息中心、数据库实例、框架实例

实现

javascript
class A {
  static single

  constructor() {
    console.log(1);
  }

  static getInstance() {
    if (!this.single) {
      this.single = new A()
    }
    return this.single
  }
}

const a = A.getInstance()
const a1 = A.getInstance()
const a2 = A.getInstance()

console.log(a,a1,a2);
// 1
// A {} A {} A {}

总结

只需要一个实例的情况下,就用单例