Re[24]: Потокобезопасный Singleton
От: Tom Россия http://www.RSDN.ru
Дата: 10.08.05 09:38
Оценка:
L>Ну а я считаю, что то, что существует должно существовать лишь постолько поскольку имеется в нем необходимость. Если необходимости в существовании экземпляра синглетона в данный момент нет, то он и не должен создаваться.

Скажи в названии или описании паттерна синглтон есть упонимание про управление временем жизни?
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Народная мудрось
всем все никому ничего(с).
Re[18]: Потокобезопасный Singleton
От: Andrbig  
Дата: 10.08.05 09:38
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>И на основе того, что в C#-е мы не можем этого сделать ты делаешь вывод о кривизне плюсов?


Не надо за меня додумывать. Я не говорил кривизна, я говорил извращение. Кривизна — ошибка, извращение — фича, которая есть, но нахрен не упала. Фича бросать .net-исключения, которые нельзя поймать в программе, написанной под .net — извращение, потому что ограничивает область применения данной программы только MC++ и потому нахрен не упала.

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

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


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


L>Для чего тебе это? Ты хочеь обсудить должны ли объекты использоваться как объекты или их можно использовать в том числе и для различных трюков? Если да, то этот вопрос не для этого форума.


Не надо за меня додумывать. Я хотел обсудить, как данная сущность отобразится на классы. Если нет желания, хорошо, не станем.

L>Главное чтобы мы о нем не забывали.


Ленин и сейчас живее всех живых.
Re[25]: Потокобезопасный Singleton
От: Lloyd Россия  
Дата: 10.08.05 09:44
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>Скажи в названии или описании паттерна синглтон есть упонимание про управление временем жизни?


Нет.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[19]: Потокобезопасный Singleton
От: Lloyd Россия  
Дата: 10.08.05 09:44
Оценка: +1
Здравствуйте, Andrbig, Вы писали:

L>>Для чего тебе это? Ты хочеь обсудить должны ли объекты использоваться как объекты или их можно использовать в том числе и для различных трюков? Если да, то этот вопрос не для этого форума.


A>Не надо за меня додумывать. Я хотел обсудить, как данная сущность отобразится на классы. Если нет желания, хорошо, не станем.


Хорошо, не будем. К тому же это явно не является темой этого форума.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[14]: потокобезопасный Singleton
От: Аноним  
Дата: 10.08.05 09:51
Оценка:
AVK>Пусть нам понадобилось запустить код BizEntity в другой системе с совершенно иной реализацией логгера. В первом варианте нам нужно будет перетаскивать исходники и править все вызовы логгера. Во-втором случае достаточно реализовать ILogger, при том даже перекомпилировать BizEntity не понадобится.

Если ты бы знал что тебе это понадобится — легко можно было бы сделать логгер через Factory (которая кстати была бы синглтоном ).
Во втором случае ты просто используешь встроенную фабрику от микрософт.

AVK>Едем дальше — вместо одного экземпляра нам понадобилось иметь в программе несколько, например для каждой сессии отдельно. И опять та же история. В первом варианте требуется перетряхивать логгер, менять семантику метода Log, либо вместо свойства Instance делать метод, соотвественно править код BizEntity и т.п. Во-втором варианте достаточно в нужном месте в контекст подсунуть нужный экземпляр. Опять же, при этом даже не требуется перекомпиляция BizEntity.


Честно говоря, ты разберись что же тебе нужно Либо синглтон, либо тогда совсем можно не париться, объявить простой класс — и мороки с сервисами твоими не будет.

AVK>Третий вариант — нам нужно обеспечить подключение логгеров, написанных пользователем, путем указания имени класса в файле конфигурации. И опять та же история — перетряхать логгер, вводить механику выбора нужного экземпляра логгера.


см. log4net

AVK>Налицо значительно более высокая связность варианта с синглтоном, приводящая к тому что код с синглтонами хуже масштабируется.


Налицо плохое понимание зачем нужен логгер и как ты его будешь использовать
Re[17]: Потокобезопасный Singleton
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.08.05 10:05
Оценка: 1 (1)
Здравствуйте, Tom, Вы писали:

L>>Понятно. По четным дням значит разница есть, а по нечетным — нет?

Tom>Делать метод из мембера статическим при использовании патерна одиночка смысла нет.

Интересно, а ты метод Reset, который должен пересоздавать экземпляр синглтона тоже методом экземпляра сделаешь?
... << RSDN@Home 1.2.0 alpha rev. 599>>
AVK Blog
Re[18]: Потокобезопасный Singleton
От: Tom Россия http://www.RSDN.ru
Дата: 10.08.05 10:12
Оценка:
AVK>Интересно, а ты метод Reset, который должен пересоздавать экземпляр синглтона тоже методом экземпляра сделаешь?

А это чудо зачем мне???
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Народная мудрось
всем все никому ничего(с).
Re[15]: потокобезопасный Singleton
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.08.05 10:15
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Если ты бы знал что тебе это понадобится — легко можно было бы сделать логгер через Factory (которая кстати была бы синглтоном ).


А если нет? На сегодня нормальная ситуация, когда спецификация проекта уточняется по мере его разработки. Что уж говорить о том, что может понадобится через некоторое время после выпуска первого релиза. С этой ситуацией приходится мирится, и, дабы минимизировать последствия, стараются проектировать в том числе менее связный код. А для этого применять синглтоны надо очень осторожно.

А>Честно говоря, ты разберись что же тебе нужно Либо синглтон, либо тогда совсем можно не париться, объявить простой класс — и мороки с сервисами твоими не будет.


Не, мужик. Когда нужно синглтон, это уже решение. А задача формулируется как обеспецение функционала логгирования и доступа к нему из прикладного кода.

AVK>>Третий вариант — нам нужно обеспечить подключение логгеров, написанных пользователем, путем указания имени класса в файле конфигурации. И опять та же история — перетряхать логгер, вводить механику выбора нужного экземпляра логгера.


А>см. log4net


Смотрел. И что? Мы же ведь говорим о паттернах, а не о конкретных решениях. Или ты при проектировании всегда выбираешь самое навороченное решение, так, на всякий случай?

AVK>>Налицо значительно более высокая связность варианта с синглтоном, приводящая к тому что код с синглтонами хуже масштабируется.


А>Налицо плохое понимание зачем нужен логгер и как ты его будешь использовать


Это называется некооректный прием ведения спора.
... << RSDN@Home 1.2.0 alpha rev. 599>>
AVK Blog
Re[19]: Потокобезопасный Singleton
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.08.05 10:26
Оценка:
Здравствуйте, Tom, Вы писали:

AVK>>Интересно, а ты метод Reset, который должен пересоздавать экземпляр синглтона тоже методом экземпляра сделаешь?


Tom>А это чудо зачем мне???


Задача — по команде извне нужно пересоздать экземпляр синглтона. Как ты ее решишь?
... << RSDN@Home 1.2.0 alpha rev. 599>>
AVK Blog
Re[16]: потокобезопасный Singleton
От: Аноним  
Дата: 10.08.05 10:27
Оценка:
AVK>А если нет? На сегодня нормальная ситуация, когда спецификация проекта уточняется по мере его разработки. Что уж говорить о том, что может понадобится через некоторое время после выпуска первого релиза. С этой ситуацией приходится мирится, и, дабы минимизировать последствия, стараются проектировать в том числе менее связный код. А для этого применять синглтоны надо очень осторожно.

Тут дело не в спецификации Надо тебе несколько логгеров — пиши несколько; надо подменить один другим — подменяй. Синглтон тут лишь средство избежать ненужного создания класса.

AVK>Не, мужик. Когда нужно синглтон, это уже решение. А задача формулируется как обеспецение функционала логгирования и доступа к нему из прикладного кода.


Вот именно Надо упрощать ситуацию.

А>>см. log4net

AVK>Смотрел. И что? Мы же ведь говорим о паттернах, а не о конкретных решениях. Или ты при проектировании всегда выбираешь самое навороченное решение, так, на всякий случай?

log4net позволяет тебе использовать несколько логгеров путем указания имени класса тратататата... класс может быть и синглтоном и т.д.
PS: log4net не самое навороченное решение

А>>Налицо плохое понимание зачем нужен логгер и как ты его будешь использовать

AVK> Это называется некооректный прием ведения спора.

Re[20]: Потокобезопасный Singleton
От: Tom Россия http://www.RSDN.ru
Дата: 10.08.05 10:33
Оценка:
AVK>Задача — по команде извне нужно пересоздать экземпляр синглтона. Как ты ее решишь?
Это уже какой то другой паттерн
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Народная мудрось
всем все никому ничего(с).
Re[17]: потокобезопасный Singleton
От: mogadanez Чехия  
Дата: 10.08.05 10:34
Оценка:
Здравствуйте, <Аноним>, Вы писали:

AVK>>А если нет? На сегодня нормальная ситуация, когда спецификация проекта уточняется по мере его разработки. Что уж говорить о том, что может понадобится через некоторое время после выпуска первого релиза. С этой ситуацией приходится мирится, и, дабы минимизировать последствия, стараются проектировать в том числе менее связный код. А для этого применять синглтоны надо очень осторожно.


А>Тут дело не в спецификации Надо тебе несколько логгеров — пиши несколько; надо подменить один другим — подменяй. Синглтон тут лишь средство избежать ненужного создания класса.


Для этого есть и другие патерны..
тут
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[21]: Потокобезопасный Singleton
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.08.05 10:47
Оценка:
Здравствуйте, Tom, Вы писали:

AVK>>Задача — по команде извне нужно пересоздать экземпляр синглтона. Как ты ее решишь?

Tom>Это уже какой то другой паттерн

Почему же другой. Тот же синглтон, только слегка модифицированный. Паттерн это не какая то догма, это образец решения. Конкретное воплощение в коде может принимать разные формы.
... << RSDN@Home 1.2.0 alpha rev. 599>>
AVK Blog
Re[17]: потокобезопасный Singleton
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.08.05 10:47
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Тут дело не в спецификации Надо тебе несколько логгеров — пиши несколько; надо подменить один другим — подменяй.


Так вот в этом собака и порылась. Если тебе сначало не надо, а потом надо, то синглтон существенно усложняет модификацию кода.

А> Синглтон тут лишь средство избежать ненужного создания класса.


Какого?

А>>>см. log4net

AVK>>Смотрел. И что? Мы же ведь говорим о паттернах, а не о конкретных решениях. Или ты при проектировании всегда выбираешь самое навороченное решение, так, на всякий случай?

А>log4net позволяет тебе использовать несколько логгеров путем указания имени класса тратататата... класс может быть и синглтоном и т.д.


И? Вывод из этого какой?
... << RSDN@Home 1.2.0 alpha rev. 599>>
AVK Blog
Re[22]: Потокобезопасный Singleton
От: Andrbig  
Дата: 10.08.05 10:54
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


AVK>>>Задача — по команде извне нужно пересоздать экземпляр синглтона. Как ты ее решишь?

Tom>>Это уже какой то другой паттерн

AVK>Почему же другой. Тот же синглтон, только слегка модифицированный. Паттерн это не какая то догма, это образец решения. Конкретное воплощение в коде может принимать разные формы.


Если синглтон слегка модифицированный, то и решение тоюе будет слегка модифицированным. А до сего момента речь вроде шла про чистые синглтоны.
Re[23]: Потокобезопасный Singleton
От: mogadanez Чехия  
Дата: 10.08.05 11:15
Оценка: +1
Здравствуйте, Andrbig, Вы писали:

A>Если синглтон слегка модифицированный, то и решение тоюе будет слегка модифицированным.

A>А до сего момента речь вроде шла про чистые синглтоны.

Паттерн это не компонент. У него нет единого кода на все случаи

цитатат из книги по паттернам:

Паттерн Singleton
Назначение:
Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа


— тут ничего не сказано про то что синглтон нельзя пересоздать, при условии что у нас также будет один экземпляр после этого

оттуда же:


В общем случае паттерн состоит из четрех основных элементов:

1. Имя......
2. Задача....
3. Решение. Описание элементов дизайна, отношений между ними, функций каждого элемента. Конретный дизайн или реализация не имеются в виду, поскольку паттерн — это шаблон, применимый в самых разных ситуациях. Просто дается абстрактное описание задачи проектирования и того, как она может быть решена с помощью некоего весьма обобщенного сочетания элементов( в нашем случае классов и объектов )
4. Результаты.....

... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[24]: Потокобезопасный Singleton
От: Merle Австрия http://rsdn.ru
Дата: 10.08.05 11:25
Оценка: +1
Здравствуйте, mogadanez, Вы писали:

M>Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа

Кстати, в общем случае, даже не один экземпляр.
Этот паттерн просто позволяет контролировать число экземпляров объекта, а то что как правило требуется только один экземпляр — это частный случай.
... << RSDN@Home 1.1.4 beta 7 rev. 0>>
Мы уже победили, просто это еще не так заметно...
Re[25]: Потокобезопасный Singleton
От: adontz Грузия http://adontz.wordpress.com/
Дата: 10.08.05 11:31
Оценка:
Здравствуйте, Merle, Вы писали:

M>Этот паттерн просто позволяет контролировать число экземпляров объекта, а то что как правило требуется только один экземпляр — это частный случай.


Это уже Multipleton вышел
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[25]: Потокобезопасный Singleton
От: mogadanez Чехия  
Дата: 10.08.05 11:34
Оценка:
Здравствуйте, Merle, Вы писали:

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


M>>Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа

M>Кстати, в общем случае, даже не один экземпляр.
M>Этот паттерн просто позволяет контролировать число экземпляров объекта, а то что как правило требуется только один экземпляр — это частный случай.

....цитата из книги Банды Четырех
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[26]: Потокобезопасный Singleton
От: Merle Австрия http://rsdn.ru
Дата: 10.08.05 11:49
Оценка:
Здравствуйте, mogadanez, Вы писали:

M>....цитата из книги Банды Четырех

Да байта ради.. Они конечно дядьки хорошие, но совсем уж так уж тоже не стоит...
Суть-то как раз в том, что он действительно позволяет контролировать количество экземпляров, а не только ограничиваться одним. Один из банды, Влиссидес кажется, тракторвал этот паттерн именно так и даже приводил пример реального использования в этом качестве. И Википедия так же утверждает, что экземпляров может быть и несколько...
... << RSDN@Home 1.1.4 beta 7 rev. 0>>
Мы уже победили, просто это еще не так заметно...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.