Skip to content

单例模式

单例模式的核心指的是只能有一个实例,并且能提供全局访问的,如果之前已经创建了一个实例,再次new时返回上一次返回的实例。

js

class FooSingleton {
    constructor(name, age) {
        // 如果没有这个实例就创建
        if (!FooSingleton.instance) {
            this.name = name;
            this.age = age;
            // 把实例挂载到FooSingleton.instance上
            FooSingleton.instance = this;
        }
        return FooSingleton.instance;
    }
}

let island = new FooSingleton('_island', '18');
let other = new FooSingleton('无名氏', '18');
console.log(island === other);  // true

优缺点

优点:

  • 节省开销空间 缺点:
  • 不适用带有频繁变化的对象,创建后如果不使用也不会被进行垃圾回收,实例值都是共用的,如果不小心改变了值内容,可能会出现外情况。