Страницы

Поиск по вопросам

вторник, 27 ноября 2018 г.

Зачем в JavaScript использовать паттерн singleton?

Разбираюсь с паттернами. Нашёл в интернете, как сделать на JavaScript конструктор, который бы реализовывал паттерн singleton. Но ведь, как я понимаю, в отличие от многих ООП языков, в JavaScript можно создавать объекты, не описывая классы (конструкторы), а просто создать через фигурные скобочки. Получается, можно всегда, когда в JavaScript нужен singleton, писать не конструктор его реализующий, а просто создавать глобальный объект, и пользоваться им, присваивая его другим переменным. Подскажите, пожалуйста, есть ли в этом недостатки в сравнении с созданием конструктора, реализующего singleton?


Ответ

Формально, эти самые 'фигурные скобочки' тоже создаются через конструктор new Object, как и примитивы через обёртки.
В пространстве JS, где всё непостоянно и специфично (во всяком случае было когда-то), этот паттерн не очень-то нужен.
Сейчас, когда JS вырос из песочницы браузеров и занимает внушительную нишу, он может использовать Singleton для взрослых целей, где после инициализации менять ничего не нужно: одно подключение к БД, один объект пользователя/сессии и пр.
Впрочем, с новыми возможностями (Object.seal, Object.preventExtensions, Object.freeze), этот паттерн опять же не нужен - всё решено изящнее и в духе языка (ИМХО).

Комментариев нет:

Отправить комментарий