0%

JavaScript设计模式——单例模式

众所周知,程序开发有很多语言,它们拥有各种不同的语法和规则,但是通用的思想部分就是——数据结构、设计模式,业内俗称内功。我是 PHP 入行,用 PHP 来实现一个单例我觉得不是什么难题。突然有一天 Node.js 进入了我的视线,心想 JavaScript 这几年皮呀,但是我喜欢。

单例的定义:

保证一个类仅有一个实例,并提供一个访问它的全局访问点。实现的方法为先判断实例是否存在,如果存在则直接返回,否则就创建实例再返回,这就保证了一个类只实例化一次。

使用场景:

一个单一对象。比如:数据库连接、弹窗,一次运行无论操作多少次数据库,连接只存在一个,弹窗不管点击多少次,弹窗只能创建一次。

代码实现:

1
class Singleton {
2
  constructor() {}
3
}
4
5
Singleton.getInstance = (() => {
6
  let instance;
7
8
  return () => {
9
    if (!instance) {
10
      instance = new Singleton();
11
    }
12
    return instance;
13
  };
14
})();
15
16
let s1 = Singleton.getInstance();
17
let s2 = Singleton.getInstance();
18
console.log(s1 === s2);

可以看出来,这个实现并不是很复杂,只是通过一个变量把实例缓存起来,判断这个变量缓存存在则返回instance这个实例。