JS Паттерны: Singleton

Первый паттерн, который мы рассмотрим называется Singleton. Он очень популярен и прост как в реализации так и в понимании. Singleton используется в случае когда нужно иметь максимум один экземпляр определенного объекта в системе.

Один из вариантов реализации:

class Counter {
  count = 0
  constructor() {
    if (typeof Counter.instance === 'object') {
      return Counter.instance
    }
    Counter.instance = this
    return Counter.instance
  }

  getCounter() {
    return this.count
  }

  incCounter() {
    this.count++
  }
}

Имея данный конструктор можно создавать объекты класса Counter в любом месте программы. Все его экземпляры будут ссылаться на один и тот же объект.

let a = new Counter()
let b = new Counter()

a.incCounter()
b.incCounter()

console.log(a === b) // true
console.log(a.getCounter() === b.getCounter()) // true (2)

В следующей статье рассмотрим паттерн под названием Factory.