# 单例模式

# 概念:

​ 一个类只有一个实例,并提供一个访问它的全局访问点。

# 作用:

​ 一个全局使用的类频繁地创建与销毁。

# 特点:

​ 优点

  • 划分命名空间,减少全局变量。
  • 加强模块性,把个人代码组织在一个全局变量中,便于维护。

​ 缺点

​ 由于单例模式提供的是一种单点访问,所以它有可能导致模块间的强耦合。

# 应用场景:

​ 当您想控制实例数目,节省系统资源的时候。

# 例子
  1. 要求生产唯一序列号。

  2. vuex 和 redux中的store。

  3. 登录框。

# 编码实现:

/**
 * @title : 单例模式 Singleton 。
 */

class Singleton {
	static instance = null;
	constructor() {
	};

	static getinstance() {
		if (!this.instance) {
			this.instance = new Singleton();
		};
		return this.instance;
	};
};

const Singleton1 = Singleton.getInstance();

const Singleton2 = Singleton.getInstance();

const Singleton3 = Singleton.getInstance();

// 三个实例两两相等,说明是同一个实例
console.log(Singleton1 === Singleton3, Singleton1 === Singleton2, Singleton2 === Singleton3);