powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / static methods VS Singleton
25 сообщений из 62, страница 1 из 3
static methods VS Singleton
    #34928092
Kartas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый. Подскажите ламеру ответ на вот какой вопрос.

Есть веб-апп. В нем есть класс с пачкой статик методов. Дергаются его методы достаточно часто и в принципе класс этот достаточно узкое место.
Так вот вопрос - не получу ли я выгрыша в скорости сделав этот класс синглтоном?
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34928098
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вы определили, что это узкое место? Как вы синхронизируете вызов методов?
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34928119
fynda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kartas пишет:

> Так вот вопрос - не получу ли я выгрыша в скорости сделав этот класс
> синглтоном?

С чего бы?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34928143
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fynda
Kartas пишет:

> Так вот вопрос - не получу ли я выгрыша в скорости сделав этот класс
> синглтоном?

С чего бы?

Да на эту глупость даже внимание обращать не стоит.
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34928855
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KartasДень добрый. Подскажите ламеру ответ на вот какой вопрос.

Есть веб-апп. В нем есть класс с пачкой статик методов. Дергаются его методы достаточно часто и в принципе класс этот достаточно узкое место.
Так вот вопрос - не получу ли я выгрыша в скорости сделав этот класс синглтоном?
Чисто теоретически статический вызов должен быть быстрее, так как он не виртуальный. Но на практике это никакой выигрышь по сравнению с неудобством использования статических методов.
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34928945
Фотография Java Programmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz KartasДень добрый. Подскажите ламеру ответ на вот какой вопрос.

Есть веб-апп. В нем есть класс с пачкой статик методов. Дергаются его методы достаточно часто и в принципе класс этот достаточно узкое место.
Так вот вопрос - не получу ли я выгрыша в скорости сделав этот класс синглтоном?
Чисто теоретически статический вызов должен быть быстрее, так как он не виртуальный. Но на практике это никакой выигрышь по сравнению с неудобством использования статических методов.

+1
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34928964
mikkri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если подумать чуть больше выяснится, что синглтоны и статические методы очень тяжело тестировать, так как если класс А зависит от синглотна Б, очень тяжело классу А подсунуть mock object вместо класса Б. Аналогично со статическими методами.

Т.е. мой ответ вам - по возможности разрабатывать дизайн без синглтонов и стараться избегать статических методов, если они делают что-либо сложнее, чем конвертация строки в число или trim.

Если же вас юнит-тестирование и поддержка кода не волнуют, то выбирайте статические методы для реализации простой логики, особенно когда для выполнения метода не важно состояние класса. Если же для выполнения метода важно иметь какой-то заранее подготовленный контекст, синглтоны уместнее.

Вместо заключения хочу отметить, что масштабировать приложение, активно использующее синглотны и статику сложно, так как синглтон является таковым только в пределах одной виртуальной машины - другая виртуальная машина будет иметь свою копию со своим собственным состоянием.
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34928982
Фотография Java Programmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikkriА если подумать чуть больше выяснится, что синглтоны и статические методы очень тяжело тестировать, так как если класс А зависит от синглотна Б, очень тяжело классу А подсунуть mock object вместо класса Б. Аналогично со статическими методами.

Т.е. мой ответ вам - по возможности разрабатывать дизайн без синглтонов и стараться избегать статических методов, если они делают что-либо сложнее, чем конвертация строки в число или trim.

Если же вас юнит-тестирование и поддержка кода не волнуют, то выбирайте статические методы для реализации простой логики, особенно когда для выполнения метода не важно состояние класса. Если же для выполнения метода важно иметь какой-то заранее подготовленный контекст, синглтоны уместнее.

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

Не надо ляля Дипенденси инжекшн конечно хорошо но палку перегибать не надо - Singleton - он на то и Singleton чтобы можно было тестировать его каак есть без мок объектов
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34928997
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Java ProgrammerНе надо ляля Дипенденси инжекшн конечно хорошо но палку перегибать не
надо - Singleton - он на то и Singleton чтобы можно было тестировать его каак есть без мок объектов
Перечитай ещё раз что написано, если с первого раза не вникаешь. Класс который использует синглтон трудно тестировать независимо от этого синглтона. Только в купе с ним.
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34929038
Фотография Java Programmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz Java ProgrammerНе надо ляля Дипенденси инжекшн конечно хорошо но палку перегибать не
надо - Singleton - он на то и Singleton чтобы можно было тестировать его каак есть без мок объектов
Перечитай ещё раз что написано, если с первого раза не вникаешь. Класс который использует синглтон трудно тестировать независимо от этого синглтона. Только в купе с ним.

Я вник с первого раза - все прекрасно тестируется писать надо правильно а не пихать синглетоны направо и налево - но "правильный" синглетон - тестированию не помешает
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34929073
mikkri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Java ProgrammerЯ вник с первого раза - все прекрасно тестируется писать надо правильно а не пихать синглетоны направо и налево - но "правильный" синглетон - тестированию не помешает

Что такое "правильный" синглтон?
И что вы будете делать с этим "правильным" синглтоном, когда приложение нужно будет развертывать на кластер?
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34929118
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikkriИ что вы будете делать с этим "правильным" синглтоном, когда приложение нужно будет развертывать на кластер?
А кто там на кластер собрался non-enterprise приложения развертывать?
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34929123
mikkri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сказано же, что есть "веб-апп".

В любом случае, как вы предлагаете тестировать класс Б, зависящий от синглтона А?
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34929131
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikkri
В любом случае, как вы предлагаете тестировать класс Б, зависящий от синглтона А?
Вам написать конкретный код?
Или есть сложности с тем, чтобы сначала оттестировать синглтон, а потом просто его использовать так, как следует?
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34929132
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В тестах.
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34929151
mikkri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Софтверный проктологИли есть сложности с тем, чтобы сначала оттестировать синглтон, а потом просто его использовать так, как следует?

Конечно в этом есть сложность! Если операции синглона ресурсоемки, совершенно ни к чему их вызывать при тестировании классов, от него зависящих. И, как ни странно, очень популярно выносить в синглотны кэши объектов, которые в случае надобности умеют подгружать данные извне или еще что-нибудь такое.

Что вы предлагаете выносить в синглтон, что не повлияет на тестирование классов, зависящих от него?
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34929160
mikkri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синглтон - это антипаттерн!
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34929161
Фотография Java Programmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikkriСказано же, что есть "веб-апп".

В любом случае, как вы предлагаете тестировать класс Б, зависящий от синглтона А?

Junit тестами ))) не собираюсь а тестирую -

Правильный Синглетон - это синглетон который по логике должен являться таковым - один во всем приложении и все! покапайтес в jdk найдете
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34929164
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Java ProgrammerЯ вник с первого раза
Тем неменее твой пост был про тестирование синглтона, а не зависимостей.

Java Programmerвсе прекрасно тестируется писать надо правильно а не пихать синглетоны направо и налево
Область распространения синглтона никак не связана с тем как другой класс на него завязан.
Опять же какое это отношение к "правильности" синглтона о который ты пишешь ниже?

Java Programmerно "правильный" синглетон - тестированию не помешает
Критери правильности в студию!
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34929166
Фотография Java Programmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikkriСинглтон - это антипаттерн!

Бред не несите - поначитались ерунды где индусы рассказывают про паттерны и туда же
не нравится не юзайте - а бред не несите
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34929174
Фотография Java Programmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz Java ProgrammerЯ вник с первого раза
Тем неменее твой пост был про тестирование синглтона, а не зависимостей.

постом выше
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34929175
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Java ProgrammerПравильный Синглетон - это синглетон который по логике должен являться таковым - один во всем приложении и все! покапайтес в jdk найдете
Одно вприложение натянутое на несколько кластре это все ещё одно приложение. Так что критерий не совсем верный.
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34929181
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikkri
Конечно в этом есть сложность! Если операции синглона ресурсоемки, совершенно ни к чему их вызывать при тестировании классов, от него зависящих. И, как ни странно, очень популярно выносить в синглотны кэши объектов, которые в случае надобности умеют подгружать данные извне или еще что-нибудь такое.

Что вы предлагаете выносить в синглтон, что не повлияет на тестирование классов, зависящих от него?
Во время тестирования чихать на то, насколько ресурсоемки операции в синглтоне (к тому же я не очень себе представляю, что это за зверь такой получится).
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34929198
mikkri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Java Programmer mikkriСинглтон - это антипаттерн!

Бред не несите - поначитались ерунды где индусы рассказывают про паттерны и туда же
не нравится не юзайте - а бред не несите
Я не один час потратил над обдумыванием стратегий тестирования кривого кода, когда вовсю используют синглтоны или наследуют классы от библиотечных (которые требуют для своей инициализации уйму конфигурационных файлов и возможность общаться с чем-нибудь извне).

Так что мое мнение не основано на чтении индийских трактатов, а на личном опыте. Именно поэтому, допускаю, что я могу быть не прав и именно по этому прошу вас обосновать вашу точку зрения.
...
Рейтинг: 0 / 0
static methods VS Singleton
    #34929199
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, у меня в приложении два синглтона — один представляет собой заготовку под пул подключений, другой — раздавалка сиквенсов. Всё это в рамках console-application.
В рамках веба — никаких синглтонов, никаких своих thread-ов, минимум статических классов (только с дефайнам и общими несинхронизируемыми функциями).
...
Рейтинг: 0 / 0
25 сообщений из 62, страница 1 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / static methods VS Singleton
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]