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

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

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

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


+1

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

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

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


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

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


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

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

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

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

Gluk (Kazan)
+1

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

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

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


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