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

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

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

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

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

С чего бы?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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