Как зайти в Даркнет?!
25th January, 01:11
5
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
893
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4395
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Синглтоны: хороший дизайн или костыль?
Синглеты-это горячо обсуждаемый шаблон дизайна,поэтому мне интересно, что о них думает сообщество Stack Overflow.
Пожалуйста, укажите причины для вашего мнения, а не только "Singletons are for lazy programmers!"
Вот довольно хорошая статья по этому вопросу, хотя она и против использования Синглетов: scientificninja.com: производительность-синглтоны .
Есть ли у кого-нибудь еще хорошие статьи о них? Может быть, в поддержку Синглетов?
В защиту синглетов:
- Они не так плохи, как глобалы, потому что глобалы не имеют стандартного принудительного порядка инициализации, и вы можете легко увидеть недетерминированные ошибки из-за наивных или неожиданных порядков зависимостей. Синглтоны (при условии, что они распределены в куче) создаются после всех глобалов и в очень предсказуемом месте в коде.
- Они очень полезны для систем ленивого / кэширования ресурсов , таких как интерфейс к медленному устройству ввода-вывода. Если вы разумно построите интерфейс singleton для медленного устройства, и никто никогда не вызовет его, вы не будете тратить время впустую. Если другой фрагмент кода вызывает его из нескольких мест, ваш singleton может оптимизировать кэширование для обоих одновременно и избежать любых двойных поисков. Вы также можете легко избежать любого состояния взаимоблокировки на управляемом ресурсе singleton.
Против синглтонов:
- В C++ нет хорошего способа получить auto-clean-up после синглетов. Есть обходные пути, и немного халтурные способы сделать это, но просто нет простого, универсального способа убедиться, что деструктор вашего singleton всегда вызывается. Это не так уж страшно с точки зрения памяти - просто подумайте об этом как о более глобальных переменных, для этой цели. Но это может быть плохо, если ваш singleton выделяет другие ресурсы (например, блокирует некоторые файлы) и не освобождает их.
Мое собственное мнение:
Я использую синглеты, но избегаю их, если есть разумная альтернатива. Это хорошо работало для меня до сих пор, и я нашел их проверяемыми, хотя немного больше работы для проверки.
У Google есть детектор Singleton для Java, который, как я полагаю, начинался как инструмент, который должен быть запущен на всех кодах, созданных в Google. В двух словах причина убрать Синглеты:
потому что они могут сделать испытание трудно и скрыть проблемы с вашим дизайн
Более подробное объяснение смотрите в разделе "почему Синглеты противоречивы" от Google.
A singleton - это просто куча глобальных переменных в маскарадном костюме.
Глобальные переменные имеют свое применение, как и синглтоны, но если вы думаете, что делаете что-то классное и полезное с singleton вместо того, чтобы использовать отвратительную глобальную переменную (все знают, что глобалы плохие mmkay), вы, к сожалению, заблуждаетесь.
Цель Singleton состоит в том, чтобы гарантировать, что класс имеет только один экземпляр, и обеспечить глобальную точку доступа к нему. Большую часть времени фокус сосредоточен на одной точке экземпляра. Представьте себе, что это называется Глобалтон. Это звучало бы менее привлекательно, поскольку это подчеркивает (обычно) негативные коннотации глобальной переменной.
Большинство хороших аргументов против синглетов связано с трудностями, которые они представляют при тестировании, поскольку создание тестовых двойников для них не так просто.