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 разработки.
# Посмотреть мое искусство