static class реализует Singleton?
От: vladpol Украина http://vlad-mislitel.livejournal.com/
Дата: 24.10.07 11:08
Оценка:
Теоретически вопрос
Можноли сказать что конструция static class реализует патерн Singleton? Или чего-то не хватает?

28.10.07 22:57: Перенесено модератором из '.NET' — TK
С уважением, Владислав Полищук
Re: static class реализует Singleton?
От: kuj  
Дата: 24.10.07 11:33
Оценка:
Здравствуйте, vladpol, Вы писали:

V>Теоретически вопрос

V>Можноли сказать что конструция static class реализует патерн Singleton? Или чего-то не хватает?
Нет, но можно сказать, что класс со статическими членами реализует monostate pattern.
... << RSDN@Home 1.2.0 alpha rev. 746>>
Re: static class реализует Singleton?
От: nikov США http://www.linkedin.com/in/nikov
Дата: 24.10.07 11:43
Оценка:
Здравствуйте, vladpol, Вы писали:

V>Можноли сказать что конструция static class реализует патерн Singleton? Или чего-то не хватает?


Много раз обсуждалось на форуме. Поищите по словам Singleton+vs+static.
Re: static class реализует Singleton?
От: SiAVoL Россия  
Дата: 24.10.07 11:46
Оценка:
Здравствуйте, vladpol, Вы писали:

V>Можноли сказать что конструция static class реализует патерн Singleton?

только если очень сильно хочется

V>Или чего-то не хватает?

хотя бы одного экземпляра класса
... << RSDN@Home 1.2.0 alpha rev. 745>>
Re: static class реализует Singleton?
От: Mr.Cat  
Дата: 24.10.07 21:32
Оценка:
Здравствуйте, vladpol, Вы писали:

V>Теоретически вопрос

V>Можноли сказать что конструция static class реализует патерн Singleton? Или чего-то не хватает?

ИМХО, раз у статик-класса нет экземпляров, никаким синглетоном тут не пахнет.
Re[2]: static class реализует Singleton?
От: Saruwatari Россия  
Дата: 28.10.07 11:41
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Здравствуйте, vladpol, Вы писали:


V>>Теоретически вопрос

V>>Можноли сказать что конструция static class реализует патерн Singleton? Или чего-то не хватает?

MC>ИМХО, раз у статик-класса нет экземпляров, никаким синглетоном тут не пахнет.


С другой стороны, если данные хранятся и доступ к ним структурирован, то в памяти где-то сидит экземпляр этого класса, доступ к которому из программы возможен только обращениями к методам и полям этого класса, как к статическим. =) Разве не так?
Re[3]: static class реализует Singleton?
От: nikov США http://www.linkedin.com/in/nikov
Дата: 28.10.07 12:08
Оценка: 1 (1)
Здравствуйте, Saruwatari, Вы писали:

MC>>ИМХО, раз у статик-класса нет экземпляров, никаким синглетоном тут не пахнет.


S>С другой стороны, если данные хранятся и доступ к ним структурирован, то в памяти где-то сидит экземпляр этого класса,


Сидеть-то, он может быть, и сидит. Но не экземпляр этого класса, а то, что (например, в Scala) называется companion object. Причем его ни привести к какому-то интерфейсу, ни передать куда-либо невозможно.
Re: static class реализует Singleton?
От: Ilya10k Россия  
Дата: 29.10.07 00:01
Оценка: +1
Здравствуйте, vladpol, Вы писали:

V>Теоретически вопрос

V>Можноли сказать что конструция static class реализует патерн Singleton? Или чего-то не хватает?

Singleton объект можно подменить другим объетом с совместимым интерфейсом (во время исполнения). Эти изменения могут сразу отобразиться везде, где используется Singleton.
Со static class такое не пройдет, у него возможна единственная реализация во время исполнения.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: static class реализует Singleton?
От: yumi  
Дата: 29.10.07 06:09
Оценка:
Здравствуйте, vladpol, Вы писали:

V>Теоретически вопрос

V>Можноли сказать что конструция static class реализует патерн Singleton? Или чего-то не хватает?

Я думаю, что нет, т.к. паттерн синглтон в принципе может порождать не только один объект, а несколько. Во вторых, когда надобность в созданном объекте отпадет, ты не сможешь освободить занимаемую ей память. А если она еще держит другие ссылки, что чревато утечкой памяти. В третьих, ты забываешь про "lazy initialization", т.е. если за все время выполнения программы объект не нужен, то соответственно он и не будет создан.
Lisp is not dead. It’s just the URL that has changed:
http://clojure.org
Re[2]: static class реализует Singleton?
От: COFF  
Дата: 29.10.07 12:39
Оценка:
Здравствуйте, Ilya10k, Вы писали:

V>>Теоретически вопрос

V>>Можноли сказать что конструция static class реализует патерн Singleton? Или чего-то не хватает?

I>Singleton объект можно подменить другим объетом с совместимым интерфейсом (во время исполнения). Эти изменения могут сразу отобразиться везде, где используется Singleton.

I>Со static class такое не пройдет, у него возможна единственная реализация во время исполнения.

Кстати, довольно интересно получается. Как раз с объектом это не пройдет, так как никто не запрещает мне сохранить ссылку на предыдущий объект синглетона где-нибудь. В итоге, в системе окажется два объекта там, где должен быть один. Если же я все обращения к объекту скрою за статическим интерфейсом, то все будет работать как и планировалось. Поэтому интуитивно дизайн со статическими методами кажется мне более правильным в общем случае. Что же до изначального вопроса, то я бы сказал так — паттерн Singleton обычно используется, чтобы реализовать конструкцию static class
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.