Вы потратили на это приложение 9 долларов, а то и больше, или получили его бесплатно. Проблема в том, что, кажется, нужно вечность, чтобы начать. Скажем, еще десять секунд, если в среднем вы используете это приложение один раз в день, то это 3650 секунд в год, а мы знаем, что время — деньги. Это реальная цена плохого дизайна, это дорого.

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

Одним из способов решения проблемы инициализации является инициализация объектов по запросу, т. е. когда они собираются использоваться. Эта реализация также известна как ленивая инициализация.

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

В целях демонстрации я собираюсь смоделировать реализацию Logger.

Вот файл Logger.js:

В конструкторе мы устанавливаем свойство времени, которое мы используем для проверки, действительно ли мы создаем синглтон. Если да, то время должно быть одинаковым в обоих случаях.

Метод журнала просто выводит на консоль.

Метод получения экземпляра проверяет, инициализирована ли уже переменная экземпляра, если это не так, он инициализирует ее экземпляром класса Logger. В противном случае, если экземпляр не нулевой, он возвращается. Вот где навязывается синглтонность.

Вот наш файл User.js:

Мы создаем экземпляр класса регистратора в то время, когда нам это действительно нужно.

Итак, когда вы рассматриваете одноэлементный шаблон? Когда выполняются следующие критерии:

  1. Желательна ленивая инициализация.
  2. Глобальный доступ не предусмотрен иначе.

Репозиторий на github можно найти здесь.

Ресурсы, использованные при подготовке этой статьи:

Шаблон проектирования JavaScript

Сеть разработчиков Майкрософт