Singleton .
Отвечу тут Дмитрию, на хабре дискутировать неудобно.
Singleton'у может понадобиться конструктор, который желательно вызвать в момент первого использования объекта. Тогда простой объект будет использовать неудобно. Я вот здесь в конце статьи привел вариант реализации Singleton, но, честно говоря, сам им пока не пользовался :) |
Цитата:
Цитата:
Цитата:
В качестве преимущества, можно выделить хранение в контексте конструктора каких-то вспомогательных "скрытых" сущностей (которые могут быть использованы в методах объекта), но тот же результат можно получить простым созданием контекста из FE, которая уничтожится сразу после инициализации объекта. Но, в качестве теоретической имитации шаблона "Singleton" из классовой парадигмы, можно и использовать предложенный вариант, но, с практической точки зрения, я не вижу особой надобности. |
Цитата:
|
Цитата:
|
Kolyaj, там же, на Хабре, приводят преимуществом наследование, с этим - согласен.
|
Цитата:
var S = {...}; if (...) { // Здесь S нужен } else { // А здесь не нужен } Цитата:
|
Цитата:
Цитата:
if (...) { var S = {}; } else { ... } В любом случае (и в твоей реализации тоже), переменная "S" уже будет в объекте переменных. Ещё преимуществом можно выделить частые подобные проверки с if-ми-else-ами. Чтобы каждый раз не проверять, инициализирован ли уже объект (if typeof S !== 'undefined'), можно вынести его в геттер (который и называется в данном случае "Singleton"): function getOurObject() { if (!arguments.callee.instance) { arguments.callee.instance = {...}; } return arguments.callee.instance; } В общем, два преимущества: 1. Наследование (если нужно); 2. Улучшение code-reuse, чтобы сократить код (этот пункт, в данном случае, является разновидностью memoization). |
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 15:46. |