Задача №2

Створити службове авто (водій, марка, номер). Створити клас таким чином, щоб можна було створити тільки один екземпляр цього класу.


Рішення:

'use strict'

/**
 * The ServiceCar class represents a singleton pattern.
 * It ensures that only one instance of the class is created and reused.
 */
class ServiceCar {
  /** @type {ServiceCar} */
  static #instance

  static get instance() {
    return this.#instance
  }

  /**
   * @param {string} driver
   * @param {string} brand
   * @param {string} licensePlate
   */
  constructor(driver, brand, licensePlate) {
    if (ServiceCar.instance) return ServiceCar.instance

    this.driver = driver
    this.brand = brand
    this.licensePlate = licensePlate

    ServiceCar.#instance = this
  }

  toString() {
    return `Model: ${this.brand}, driver ${this.driver}, license ${this.licensePlate}.`
  }
}

// ---

new ServiceCar('Oksana', 'Daewoo', 'ВС3247АС')
const maybach = new ServiceCar('Boris', 'Mercedes-Benz', 'ВС7777СВ')

console.log(maybach) // Daewoo