Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
Немножко глупый такой вопрос. Есть такой паттерн - Singleton, предназначенный для создания "глобального" объекта в единственном экземпляре. Чем такой подход принципиально лучше использования класса, содержащего только статические поля и методы? В обоих случаях имеем нужную "глобальность", а необходимые действия, связанные с инициализацией "глобального" класса (при втором подходе) можно выполнить в статическом конструкторе (в случае использования C#) или в блоке static (в случае Java). Так с ходу единственный минус второго подхода - нельзя передать параметры для инициализации (статический конструктор не может принимать параметры), хотя это тоже решаемо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2006, 18:49 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
KnooЧем такой подход принципиально лучше использования класса, содержащего только статические поля и методы? Почему лучше? Иногда нужны и статики(у всего своё назначение), Синглтон - это объект, с ним работают как с объектом, можно его наследовать от кого-то, ... А зачем в ООП объекты - это уже другой вопрос... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2006, 12:01 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
Будто "целиком статический" класс нельзя унаследовать от кого-то... Основной плюс именно синглтона в том, что создаваемый глобальный объект не обязан быть объектом именно запрошенного класса. Скажем, делаем объект ServerConnection, который в зависимости от настроек возвращает LocalConnection, TCPConnection, HTTPConnection.... Кроме того, в getInstance относительно легко извратиться, если потребуется непредусмотренный ранее хак, скажем переключение с сервера на сервер и как следствие существование в течение некоторого времени двух экземпляров ServerConnection. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2006, 13:50 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
авторОсновной плюс именно синглтона в том, что создаваемый глобальный объект не обязан быть объектом именно запрошенного класса. Скажем, делаем объект ServerConnection, который в зависимости от настроек возвращает LocalConnection, TCPConnection, HTTPConnection.... Кроме того, в getInstance относительно легко извратиться, если потребуется непредусмотренный ранее хак, скажем переключение с сервера на сервер и как следствие существование в течение некоторого времени двух экземпляров ServerConnection. Осознал, спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2006, 15:27 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
ну и синглтон можно передавать куда-нить (и они могут быть полиморфны), а статический класс - намного сложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 14:22 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
maXmoну и синглтон можно передавать куда-нить, а статический класс - намного сложнее. Ага, передать куда-нибудь и без того всем доступный объект очень нужная и очень сложная задача :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 16:29 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
ну например, есть у тебя пять плагинов (синглтоны) - разные классы, отнаследованные от одного и ты их хочешь хранить в одном массиве или всех их конфигурировать единообразно или ещё чего... Точно также, если есть некий метод, работающий с плагином (или коннектом к бд) - ему можно будет передавать синглтон в качестве параметра, причём этот метод даже не будет знать о его синглтонской природе (которая может быть сокрыта). Класс со статическими членами просто контейнер кучи данных, а синглтон кроме этого ещё является и объектом. Смотря что важнее - куча данных или объект, их содержащий. Класс со статическими членами - самый прозрачный способ реализации кучи данных в языках, не поддерживающих неооп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 16:58 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
maXmoну например, ... (Дцен поскипан) - самый прозрачный способ реализации кучи данных в языках, не поддерживающих неооп. Статические члены класса (поля, методы) - это чаще всего дикость и бэд дизайн, поэтому рассуждения о его плюсах/минусах мне, н-р, читать достаточно забавно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 18:38 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUsСтатические члены класса (поля, методы) - это чаще всего дикость и бэд дизайн ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 20:08 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
softwarer NotGonnaGetUsСтатические члены класса (поля, методы) - это чаще всего дикость и бэд дизайн +1 Хотя такая точка зрения к сожалению встречается среди руководства ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2006, 09:23 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
Встречается много разных.... мыслей. Скажем, один из моих знакомых жаловался на начальника, который в административном порядке запретил использовать наследование форм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2006, 10:19 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUsСтатические члены класса (поля, методы) - это чаще всего дикость и бэд дизайн, поэтому рассуждения о его плюсах/минусах мне, н-р, читать достаточно забавно.ну ладно, как ты решить такую вещь: есть у меня хэш-таблица с настройками, где мне её разместить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2006, 12:01 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUsАга, передать куда-нибудь и без того всем доступный объект очень нужная и очень сложная задача :)да вроде он необязательно доступен всем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2006, 15:34 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
Вспомнил про статические классы =) Кто знает в каких случаях их грамотно применять?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2006, 15:55 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
LINUXERВспомнил про статические классы =) Кто знает в каких случаях их грамотно применять?? Ой это не про джаву раздел :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2006, 17:21 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
ну почему, темка как раз для языков типа жабы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2006, 17:54 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs maXmoну например, ... (Дцен поскипан) - самый прозрачный способ реализации кучи данных в языках, не поддерживающих неооп. Статические члены класса (поля, методы) - это чаще всего дикость и бэд дизайн, поэтому рассуждения о его плюсах/минусах мне, н-р, читать достаточно забавно. Не скажу что дикость, но иногда от них бывают очень неприятные последствия... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 17:17 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
не сдерживай себя, расскажи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 17:39 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
Да, интересно про последствия.. использование static final вроде единственная альтернатива константам(в java), немного смущает возможность такой конструкции : Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2006, 06:26 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
Timmно иногда от них бывают очень неприятные последствия... А уж какие неприятные последствия иногда бывают, например, от ООП..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2006, 13:34 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
LINUXERнемного смущает возможность такой конструкциивс говорит: Static member cannot be accessed with an instance reference; qualify it with a type name instead ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 11:29 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
softwarer NotGonnaGetUs maXmo ну например, ... (Дцен поскипан) - самый прозрачный способ реализации кучи данных в языках, не поддерживающих неооп. Статические члены класса (поля, методы) - это чаще всего дикость и бэд дизайн Ага, просто ходячий анекдот. maXmo ну ладно, как ты решить такую вещь: есть у меня хэш-таблица с настройками, где мне её разместить? Задачи "есть хэш-таблица" - нет. Это уже решение. Хотя о чём тут говорить, если у вас на форуме по c# умудряются формы через статик поля связывать... Где размещать какие-либо данные зависит от того, что это за данные и кем они будут обслуживаться. Посмотри, н-р, как работа с настройками сделана в Log4Net. Gluk (Kazan) +1 Хотя такая точка зрения к сожалению встречается среди руководства Любой код (со статиками или без) решает вполне конкретную задачу. Из двух решений лучше то, в котором возникает меньше возможных связей. Публичные или частично открытые статик поля (а так же синглтоны) добавляют огромное количество потенциальных связей. Если количество классов велико, необходимость исследовать потенциальные связи приводит к существенному усложнению внесения изменений, либо к большому количеству багов созданных исправлением багов. Поэтому введение глобальных переменных (коими по сути являются статик члены классов и синглтоны) должно быть самой крайней мерой, когда никакие другие решения (aop, ioc, просто редизайн) уже не возможны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 12:11 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs Любой код (со статиками или без) решает вполне конкретную задачу. Из двух решений лучше то, в котором возникает меньше возможных связей. Публичные или частично открытые статик поля (а так же синглтоны) добавляют огромное количество потенциальных связей. Если количество классов велико, необходимость исследовать потенциальные связи приводит к существенному усложнению внесения изменений, либо к большому количеству багов созданных исправлением багов. Поэтому введение глобальных переменных (коими по сути являются статик члены классов и синглтоны) должно быть самой крайней мерой, когда никакие другие решения (aop, ioc, просто редизайн) уже не возможны. Прежде чем поучать, стоит разобраться с определениями. Слово static в C++ (Java в настоящий момент меня не волнует) ОЧЕНЬ многофункциональное. Какой из его смыслов Вы предлагаете предать анафеме ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 12:32 |
|
||
|
Singleton vs Static members
|
|||
|---|---|---|---|
|
#18+
В частности, очень интересно как вы определите методы класса, которые можно будет использовать в Win API как Callback или экспортировать в DLL к примеру ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 12:35 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=34140281&tid=1346437]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
17ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 275ms |
| total: | 375ms |

| 0 / 0 |
