关键词

JavaScript设计模式之单例模式实例

JavaScript设计模式之单例模式实例

什么是单例模式

单例模式是一种创建型设计模式,用于确保一个类只有一个实例,并提供对该实例的全局访问点。

在JavaScript中,单例模式可以通过类的静态属性或闭包来实现。下面我们会用两个例子来说明。

静态属性实现

在这个例子中,我们定义一个Singleton类,使用类的静态属性来实现单例模式。

class Singleton {
  static instance = null;

  constructor() {
    if (Singleton.instance) {
      return Singleton.instance;
    }
    Singleton.instance = this;
  }
}

上面的代码中,我们在Singleton类中声明了一个静态属性instance,初始值为null。在类的构造函数中,我们判断instance是否为null,如果不是,返回已有的实例;如果是,为instance赋值为this,并返回它。

这样,我们就可以创建Singleton的实例,并确保只有一个实例存在。

const s1 = new Singleton();
const s2 = new Singleton();

console.log(s1 === s2); // true

上面的代码中,我们分别创建了两个Singleton的实例s1和s2,它们是同一个对象。

闭包实现

在这个例子中,我们使用闭包来实现单例模式。

const Singleton = (() => {
  let instance = null;

  return class {
    constructor() {
      if (instance) {
        return instance;
      }
      instance = this;
    }
  };
})();

上面的代码中,我们定义了一个IIFE(立即调用函数表达式),返回一个闭包,闭包包含一个instance变量和一个Singleton类。在Singleton类的构造函数中,我们判断instance是否为null,如果不是,返回已有的实例;如果是,为instance赋值为this,并返回它。

这样,我们就可以创建Singleton的实例,并确保只有一个实例存在。

const s1 = new Singleton();
const s2 = new Singleton();

console.log(s1 === s2); // true

上面的代码中,我们分别创建了两个Singleton的实例s1和s2,它们是同一个对象。

总结

单例模式是一种创建型设计模式,用于确保一个类只有一个实例,并提供对该实例的全局访问点。在JavaScript中,单例模式可以通过类的静态属性或闭包来实现。

以上是完整的JavaScript单例模式实现攻略,希望对你有所帮助。

本文链接:http://task.lmcjl.com/news/8407.html

展开阅读全文