Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2016, 13:48   #11
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Если вам нужны интерфейсы, то сингелтон вам не нужен.
синглетон никогда не исключал реализацию интерфейса.
не путайте статический класс и синглетон, да первый много где может его заменить, но когда нам нужно реализовать IStorageManager, причем у реализации должен быть лишь один объект(например это TapeStorageManager), то тут нужен именно синглетон.
Цитата:
Есть маленький такой плюсик. Когда у вас не хватает ресурсов, к примеру памяти, для создания ещё одного класса. Тога имеет смысл по очереди: создал - разрушил, создал - разрушил.
а вы в курсе что на практике от этого только хуже? фрагментацию памяти никто не отменял.
Цитата:
Хотя однозначно к антипаттернам я относить бы его не стал
Антипаттерном является злоупотребление синглетонами.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.03.2016, 14:04   #12
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а вы в курсе что на практике от этого только хуже? фрагментацию памяти никто не отменял.
При чём здесь фрагментация? Если у вас миллион маленьких структур, то да, заведомо быстрее сразу объявить весь массив. А если несколько тяжёлых объектов, то пускай рантайм сам решает, что лучше - лишний раз собрать мусор или расширить кучу.
ds.Dante вне форума Ответить с цитированием
Старый 18.03.2016, 14:49   #13
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от ds.Dante Посмотреть сообщение
При чём здесь фрагментация? Если у вас миллион маленьких структур, то да, заведомо быстрее сразу объявить весь массив. А если несколько тяжёлых объектов, то пускай рантайм сам решает, что лучше - лишний раз собрать мусор или расширить кучу.
я о том что часто дергание кучи(у нас же не единственное место выделение, в реальном приложении) будет вызывать фрагментацию.
+ сборщик удалит мусор не сразу, и мы в итоге получим или фриз на сборку или OutOfMemory быстрее чем если бы оставили объект.
напомню что это про нехватку памяти и принцип создал-разрушил для переиспользумых объектов(а речь все же о синглетоне, он поидее должен).
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.03.2016, 15:43   #14
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
я о том что часто дергание кучи(у нас же не единственное место выделение, в реальном приложении) будет вызывать фрагментацию.
+ сборщик удалит мусор не сразу, и мы в итоге получим или фриз на сборку или OutOfMemory быстрее чем если бы оставили объект.
Зависит от размеров объектов. Куча будет дёргаться часто только если с каждым разом мы создаём значительно больший синглтон. Другие же места выделения памяти будут одинаково влиять на оба наших варианта.

А OutOfMemory мы, скорее всего, получим только в вашем варианте. Если ни в одном потоке впереди по ходу выполнения не встречается ссылка на объект, он подлежит сборке; не в первом поколении, так во втором. Области досягаемости определяются джиттером, на скорость это практически не влияет.

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
напомню что это про нехватку памяти и принцип создал-разрушил для переиспользумых объектов(а речь все же о синглетоне, он поидее должен).
Вы недоцитировали Pavia, он говорил про "надуманный пример и реально такое не бывает". Как я понял, речь о синглтонах, которые используются по очереди, без возвратов к предыдущим.

Последний раз редактировалось ds.Dante; 18.03.2016 в 16:05.
ds.Dante вне форума Ответить с цитированием
Старый 18.03.2016, 16:31   #15
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Вы недоцитировали Pavia, он говорил про "надуманный пример и реально такое не бывает"
я специально процитировал этот момент, так как раз такая фраза прозвучала то значит что много где может проскочить отношение "а хрен с ним, сборщик соберет".
вообще я хотел именно показать что когда ресурсов уже мало лучше как можно меньше терять объекты создавая новые, вместо переиспользования.
а то потом потом вижу код вида
Код:
new Converter().Convert(obj)
и резко хочется стукнуть автора кода.

напомню что там был контекст недостатка памяти.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.03.2016, 17:09   #16
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
резко хочется стукнуть автора кода.
Лучше посадить его писать свой сборщик мусора.


На ассемблере.
ds.Dante вне форума Ответить с цитированием
Старый 22.03.2016, 11:46   #17
crazy horse
ios developer
Старожил
 
Аватар для crazy horse
 
Регистрация: 16.11.2007
Сообщений: 2,885
По умолчанию

Цитата:
Если вам нужны интерфейсы, то сингелтон вам не нужен.
О господи иисусе. Представьте себе синглтон сервис, который отвечает за связь с сервачным апи. Интерфейс один - реализаций, допустим, две: одна для жпрс, вторая для вафли. Или для разных типов коннекта (нттп/ссл), не суть, такого в нормальном проекте всегда полно. Почему сервис именно синглтон? Конкретно этот нужен синглтоном, так в разы проще разруливать с очередью и кэшем. Теперь вопрос, как в подобном случае под интерфейсы на ходу инжектить статику?
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!
crazy horse вне форума Ответить с цитированием
Старый 22.03.2016, 13:57   #18
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

crazy horse, типичный юзкейc, имхо, другой: интерфейс связи с сервером реализован обычным HTTP и тестовой заглушкой. В конструктор клиента в рабочем коде передаём первый, в большинстве юнит-тестов - второй.

Последний раз редактировалось ds.Dante; 22.03.2016 в 13:59.
ds.Dante вне форума Ответить с цитированием
Старый 22.03.2016, 14:30   #19
crazy horse
ios developer
Старожил
 
Аватар для crazy horse
 
Регистрация: 16.11.2007
Сообщений: 2,885
По умолчанию

Цитата:
Сообщение от ds.Dante Посмотреть сообщение
crazy horse, типичный юзкейc, имхо, другой: интерфейс связи с сервером реализован обычным HTTP и тестовой заглушкой. В конструктор клиента в рабочем коде передаём первый, в большинстве юнит-тестов - второй.
Типичный, но мне хотелось вытащить на свет божий именно рантайм. Понятно, что и с юниттестами оно все по другому. Тем более, что нужная инфраструктура давно уже генерится рубёвым скриптом одновременно и в тестах и в коде.
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!
crazy horse вне форума Ответить с цитированием
Старый 22.03.2016, 14:49   #20
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
Антипаттерном является злоупотребление синглетонами.
антипаттерном является отношение к паттернам, как к серебряным пулям. Паттерны - примеры и не более того.
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что такое отладчик с чем его едят и как его использовать Dimka-novitsek Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 20.03.2014 17:59
Класс-контейнер? Что это такое и с чем его «едят»? 4atty Общие вопросы C/C++ 1 12.03.2013 00:43
Что такое Flash и с чем его едят... coolartemka JavaScript, Ajax 1 18.05.2011 02:40
<< >> & ^ | с чем это едят и что это такое? pufystyj Общие вопросы C/C++ 4 30.03.2011 13:59