Singleton — это порождающий шаблон проектирования, который позволяет вам гарантировать, что класс имеет только один экземпляр, предоставляя при этом глобальную точку доступа к экземпляру.

Общие ресурсы в приложении. Переменные, метод являются общими для разных объектов. Все объекты, использующие (A,B,C,D) один экземпляр общего объекта, не создают свои собственные.

Он называется синглетон, потому что ваше приложение будет и может иметь только один тип объекта. Экземпляр во время и во всех местах, где используется этот объект, имеют этот единственный экземпляр объекта. Давайте продемонстрируем, что такое синглтон, а также что такое единичный экземпляр :D.

Мы создадим простой класс TodoList, создадим конструктор и создадим элементы. Вот так :Д

class TodoList {
  constructor() {
    this.items = [];
  }
}

И теперь мы также создаем функцию добавления, которая используется для добавления элементов.

class TodoList {
  constructor() {
    this.items = [];
  }
  add(item) {
    this.items.push(item);
  }
}

Затем мы также запускаем console.log (this.items), а затем распечатываем элементы.

class TodoList {
  constructor() {
    this.items = [];
  }
  add(item) {
    this.items.push(item);
    console.log(this.items);
  }
  printItems() {
    console.log(`${this.items.length} items are added :D`);
  }
}

Теперь мы собираемся создать два todolist, а затем вы выбираете todolist1.add(‘cilok’), а затем печатаемItems. Вот так :Д

class TodoList {
  constructor() {
    this.items = [];
  }
  add(item) {
    this.items.push(item);
    console.log(this.items);
  }
  printItems() {
    console.log(`${this.items.length} items are added :D`);
  }
}

const todoList1 = new TodoList();
todoList1.add("cilok");
todoList1.printItems();

Теперь вы можете получить

а теперь создадим todolist2, а потом добавим seblak.

class TodoList {
  constructor() {
    this.items = [];
  }
  add(item) {
    this.items.push(item);
    console.log(this.items);
  }
  printItems() {
    console.log(`${this.items.length} items are added :D`);
  }
}

const todoList1 = new TodoList();
todoList1.add("cilok");
todoList1.printItems();

const todoList2 = new TodoList();
todoList2.add("seblak");
todoList2.printItems();

И теперь вы видите, что они разделены. У обоих всего один предмет. Почему? Это потому, что они создают свой собственный объект. Чтобы доказать это, мы можем использовать console.log, а затем мы проверяем, что todolist тот же.

console.log("todolist1 === todolist2", todoList1 === todoList2);

Теперь мы можем и получить результат, они не совпадают :D

Итак, чтобы решить эту проблему, мы можем создать синглтон. Теперь мы создаем класс, а именно SingleTodoList

class SingleTodoList{
       
}

А затем мы копируем предыдущий конструктор и весь метод в SingleTodoList, вот так :D

class SingleTodoList {
  constructor() {
    this.items = [];
  }
  add(item) {
    this.items.push(item);
    console.log(this.items);
  }
  printItems() {
    console.log(`${this.items.length} items are added :D`);
  }
}

Но здесь мы собираемся добавить проверку, и мы проверили, что каждый экземпляр SingleTodoList равен нулю, и у нас есть пустой массив, а затем экземпляр SingleTodoList равен этому.

class SingleTodoList {
  constructor() {
    if (SingleTodoList.instance == null) {
      this.items = [];
      SingleTodoList.instance = this;
    }
  }
  add(item) {
    this.items.push(item);
    console.log(this.items);
  }
  printItems() {
    console.log(`${this.items.length} items are added :D`);
  }
}

и мы возвращаем оригинальный SingleTodoList.instance

class SingleTodoList {
  constructor() {
    if (SingleTodoList.instance == null) {
      this.items = [];
      SingleTodoList.instance = this;
    }
    return SingleTodoList.instance;
  }
  add(item) {
    this.items.push(item);
    console.log(this.items);
  }
  printItems() {
    console.log(`${this.items.length} items are added :D`);
  }
}

Итак, теперь мы делаем то же самое, чтобы распечатать, вот так

const todoList1 = new SingleTodoList();
todoList1.add("cilok");
todoList1.printItems();

const todoList2 = new SingleTodoList();
todoList2.add("seblak");
todoList2.printItems();

console.log("todolist1 === todolist2", todoList1 === todoList2);

Теперь мы можем видеть в printItems, вы видите два элемента вместо cilok и seblak :v здесь, и мы проверяем, что они одинаковы (правда). Так что это только один случай здесь.

Привет! Меня зовут Бахрул Розак, в настоящее время я все еще учусь в одном из частных университетов Джакарты. Помимо того, что я студент, у меня есть опыт в области веб-разработки, особенно Back End разработки.

# Посмотреть мое искусство

https://github.com/Bahrul-Rozak