Что такого плохого в синглетах? [закрыто]

Это как раз работает jQuery.

$("#something")

Объект 0 = div # something length = 1 jquery = 1.2.6

$("#nothing")

Длина объекта = 0 jquery = 1.2.6

1894
задан 9 revs, 7 users 29% 27 July 2017 в 09:09
поделиться

34 ответа

Поскольку они - в основном объектно-ориентированные глобальные переменные, можно обычно разрабатывать классы таким способом так, чтобы Вам не были нужны они.

4
ответ дан Ycros 27 July 2017 в 09:09
поделиться

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

Люди думают, что Singleton является злой, потому что они используют ее для globals. Именно из-за этого беспорядка на Singleton смотрят вниз. Не путайте Одиночные элементы и globals. Если используется для цели это было предназначено для, Вы получите экстремальную выгоду из Шаблона "одиночка".

114
ответ дан 2 revs, 2 users 67% 27 July 2017 в 09:09
поделиться

Некоторые контрапункты от автора:

Вы застреваете, если необходимо сделать класс не единственным в будущем Нисколько - я был в этой ситуации с одиночным элементом соединения единой базы данных, что я хотел превратиться в пул соединения. Помните, что к каждому одиночному элементу получают доступ через стандартный метод:

MyClass.instance

Это подобно подписи метода фабрики. Все, что я сделал, было обновить метод экземпляра возвратить следующее соединение из пула - никакие другие требуемые изменения. Это было бы намного более твердо, если бы мы не использовали одиночный элемент.

Одиночные элементы являются просто необычным globals, не Может спорить с этим, но так все статические поля и методы - что-нибудь, к чему получают доступ от класса, а не экземпляр чрезвычайно глобален, и я не вижу так много pushback на использовании статических полей?

Не высказывание, что Одиночные элементы хороши, просто пододвинув обратно в части 'расхожего мнения' здесь.

3
ответ дан Ewan Makepeace 27 July 2017 в 09:09
поделиться

Синглтоны - это НЕ плохо. Это плохо только тогда, когда вы делаете что-то глобально уникальным, что не является глобально уникальным.

Однако существуют "сервисы области применения" (подумайте о системе обмена сообщениями, которая заставляет компоненты взаимодействовать) - это ПРИЗЫВАЕТ к использованию синглтона, "MessageQueue" - класса, который имеет метод "SendMessage(...)".

Затем вы можете делать следующее отовсюду:

MessageQueue.Current.SendMessage(new MailArrivedMessage(...));

И, конечно, делать:

MessageQueue.Current.RegisterReceiver(this);

в классах, реализующих IMessageReceiver.

7
ответ дан 22 November 2019 в 20:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: