powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Singleton vs Static members
25 сообщений из 54, страница 1 из 3
Singleton vs Static members
    #34122157
Knoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немножко глупый такой вопрос. Есть такой паттерн - Singleton, предназначенный для создания "глобального" объекта в единственном экземпляре. Чем такой подход принципиально лучше использования класса, содержащего только статические поля и методы?
В обоих случаях имеем нужную "глобальность", а необходимые действия, связанные с инициализацией "глобального" класса (при втором подходе) можно выполнить в статическом конструкторе (в случае использования C#) или в блоке static (в случае Java). Так с ходу единственный минус второго подхода - нельзя передать параметры для инициализации (статический конструктор не может принимать параметры), хотя это тоже решаемо.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34123364
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KnooЧем такой подход принципиально лучше использования класса, содержащего только статические поля и методы?

Почему лучше? Иногда нужны и статики(у всего своё назначение),
Синглтон - это объект, с ним работают как с объектом, можно его наследовать от кого-то, ...
А зачем в ООП объекты - это уже другой вопрос...
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34123840
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Будто "целиком статический" класс нельзя унаследовать от кого-то...

Основной плюс именно синглтона в том, что создаваемый глобальный объект не обязан быть объектом именно запрошенного класса. Скажем, делаем объект ServerConnection, который в зависимости от настроек возвращает LocalConnection, TCPConnection, HTTPConnection.... Кроме того, в getInstance относительно легко извратиться, если потребуется непредусмотренный ранее хак, скажем переключение с сервера на сервер и как следствие существование в течение некоторого времени двух экземпляров ServerConnection.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34124241
Knoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторОсновной плюс именно синглтона в том, что создаваемый глобальный объект не обязан быть объектом именно запрошенного класса. Скажем, делаем объект ServerConnection, который в зависимости от настроек возвращает LocalConnection, TCPConnection, HTTPConnection.... Кроме того, в getInstance относительно легко извратиться, если потребуется непредусмотренный ранее хак, скажем переключение с сервера на сервер и как следствие существование в течение некоторого времени двух экземпляров ServerConnection.
Осознал, спасибо :)
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34127244
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и синглтон можно передавать куда-нить (и они могут быть полиморфны), а статический класс - намного сложнее.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34127829
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoну и синглтон можно передавать куда-нить, а статический класс - намного сложнее.
Ага, передать куда-нибудь и без того всем доступный объект очень нужная и очень сложная задача :)
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34127996
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну например, есть у тебя пять плагинов (синглтоны) - разные классы, отнаследованные от одного и ты их хочешь хранить в одном массиве или всех их конфигурировать единообразно или ещё чего... Точно также, если есть некий метод, работающий с плагином (или коннектом к бд) - ему можно будет передавать синглтон в качестве параметра, причём этот метод даже не будет знать о его синглтонской природе (которая может быть сокрыта). Класс со статическими членами просто контейнер кучи данных, а синглтон кроме этого ещё является и объектом. Смотря что важнее - куча данных или объект, их содержащий. Класс со статическими членами - самый прозрачный способ реализации кучи данных в языках, не поддерживающих неооп.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34128345
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoну например, ... (Дцен поскипан) - самый прозрачный способ реализации кучи данных в языках, не поддерживающих неооп.

Статические члены класса (поля, методы) - это чаще всего дикость и бэд дизайн, поэтому рассуждения о его плюсах/минусах мне, н-р, читать достаточно забавно.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34128519
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUsСтатические члены класса (поля, методы) - это чаще всего дикость и бэд дизайн
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34129073
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer NotGonnaGetUsСтатические члены класса (поля, методы) - это чаще всего дикость и бэд дизайн


+1

Хотя такая точка зрения к сожалению встречается среди руководства
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34129226
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Встречается много разных.... мыслей. Скажем, один из моих знакомых жаловался на начальника, который в административном порядке запретил использовать наследование форм.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34129660
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUsСтатические члены класса (поля, методы) - это чаще всего дикость и бэд дизайн, поэтому рассуждения о его плюсах/минусах мне, н-р, читать достаточно забавно.ну ладно, как ты решить такую вещь: есть у меня хэш-таблица с настройками, где мне её разместить?
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34130659
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUsАга, передать куда-нибудь и без того всем доступный объект очень нужная и очень сложная задача :)да вроде он необязательно доступен всем.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34130743
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вспомнил про статические классы =)
Кто знает в каких случаях их грамотно применять??
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34131113
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LINUXERВспомнил про статические классы =)
Кто знает в каких случаях их грамотно применять??
Ой это не про джаву раздел :(
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34131241
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну почему, темка как раз для языков типа жабы.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34137509
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs maXmoну например, ... (Дцен поскипан) - самый прозрачный способ реализации кучи данных в языках, не поддерживающих неооп.

Статические члены класса (поля, методы) - это чаще всего дикость и бэд дизайн, поэтому рассуждения о его плюсах/минусах мне, н-р, читать достаточно забавно.
Не скажу что дикость, но иногда от них бывают очень неприятные последствия...
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34137587
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не сдерживай себя, расскажи
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34138239
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, интересно про последствия..
использование static final вроде единственная альтернатива константам(в java),
немного смущает возможность такой конструкции :
Код: plaintext
1.
2.
3.
String s="1";
Integer a= 2 ;
 int  b=a.parseInt(s);//хотя лучше так, без примитивных типов всё было бы печально
Проблемы чаще всего возникают, когда "одного экземпляра поля" не хватает на все объекты класса, т е использование не по назначению
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34138442
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timmно иногда от них бывают очень неприятные последствия...
А уж какие неприятные последствия иногда бывают, например, от ООП.....
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34140281
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LINUXERнемного смущает возможность такой конструкциивс говорит: Static member cannot be accessed with an instance reference; qualify it with a type name instead
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34146275
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
NotGonnaGetUs
maXmo
ну например, ... (Дцен поскипан) - самый прозрачный способ реализации кучи данных в языках, не поддерживающих неооп.

Статические члены класса (поля, методы) - это чаще всего дикость и бэд дизайн


Ага, просто ходячий анекдот.

maXmo
ну ладно, как ты решить такую вещь: есть у меня хэш-таблица с настройками, где мне её разместить?


Задачи "есть хэш-таблица" - нет. Это уже решение.

Хотя о чём тут говорить, если у вас на форуме по c# умудряются формы через статик поля связывать...

Где размещать какие-либо данные зависит от того, что это за данные и кем они будут обслуживаться.

Посмотри, н-р, как работа с настройками сделана в Log4Net.

Gluk (Kazan)
+1

Хотя такая точка зрения к сожалению встречается среди руководства

Любой код (со статиками или без) решает вполне конкретную задачу.
Из двух решений лучше то, в котором возникает меньше возможных связей.
Публичные или частично открытые статик поля (а так же синглтоны) добавляют огромное количество потенциальных связей. Если количество классов велико, необходимость исследовать потенциальные связи приводит к существенному усложнению внесения изменений, либо к большому количеству багов созданных исправлением багов. Поэтому введение глобальных переменных (коими по сути являются статик члены классов и синглтоны) должно быть самой крайней мерой, когда никакие другие решения (aop, ioc, просто редизайн) уже не возможны.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34146386
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs
Любой код (со статиками или без) решает вполне конкретную задачу.
Из двух решений лучше то, в котором возникает меньше возможных связей.
Публичные или частично открытые статик поля (а так же синглтоны) добавляют огромное количество потенциальных связей. Если количество классов велико, необходимость исследовать потенциальные связи приводит к существенному усложнению внесения изменений, либо к большому количеству багов созданных исправлением багов. Поэтому введение глобальных переменных (коими по сути являются статик члены классов и синглтоны) должно быть самой крайней мерой, когда никакие другие решения (aop, ioc, просто редизайн) уже не возможны.

Прежде чем поучать, стоит разобраться с определениями. Слово static в C++ (Java в настоящий момент меня не волнует) ОЧЕНЬ многофункциональное. Какой из его смыслов Вы предлагаете предать анафеме ???
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34146395
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В частности, очень интересно как вы определите методы класса, которые можно будет использовать в Win API как Callback или экспортировать в DLL к примеру ?
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34146594
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUsПосмотри, н-р, как работа с настройками сделана в Log4Net.мог бы и в двух словах объяснить, а хеш-таблица или дом-фрагмент - разницы никакой нет.
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 1 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Singleton vs Static members
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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