单例模式

一、单例模式

// 单例模式
class SingleMode {
  static getInstance(name, age) {
    if (!SingleMode.instance) {
      SingleMode.instance = new SingleMode(name, age);
    }
    return SingleMode.instance;
  }

  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  setInfo(name, age) {
    this.name = name;
    this.age = age;
    console.log(this.name, this.age);
  }
}

const s1 = SingleMode.getInstance('shangyueyue', 18);
const s2 = SingleMode.getInstance('shangyueyue', 18);
console.log(s1, s2, s1 === s2);
// SingleMode { name: 'shangyueyue', age: 18 } SingleMode { name: 'shangyueyue', age: 18 } true
s2.setInfo('huyating', 23);
console.log(s1, s2, s1 === s2);
// SingleMode { name: 'huyating', age: 23 } SingleMode { name: 'huyating', age: 23 } true

// 单例模式
class SingleMode2 {
  constructor(name, age) {
    if (SingleMode2.instance) return SingleMode2.instance;
    this.name = name;
    this.age = age;
    SingleMode2.instance = this;
    return this;
  }

  setInfo(name, age) {
    this.name = name;
    this.age = age;
    console.log(this.name, this.age);
  }
}
const s3 = new SingleMode2('shangyueyue', 18);
const s4 = new SingleMode2('shangyueyue', 18);
console.log(s3, s4, s3 === s4);
// SingleMode { name: 'shangyueyue', age: 18 } SingleMode { name: 'shangyueyue', age: 18 } true
s3.setInfo('huyating', 23);
console.log(s3, s4, s3 === s4);
// SingleMode { name: 'huyating', age: 23 } SingleMode { name: 'huyating', age: 23 } true
原文地址:https://www.cnblogs.com/shangyueyue/p/10824285.html