|
|
|
Зачем Singleton-у sealed?
|
|||
|---|---|---|---|
|
#18+
Вопрос новичка-теоретика, только что прочитавшего о таком преимуществ синглтона перед статиками, как гибкость в разрезе наследования, а тут его майкрософт рекомендует запечатывать. Я могу теоретически предположить, что в одном проекте может быть необходимость в нескольких однотипных одиночках, реализованных фабрикой, и тогда они потомки. Представить себе ситуацию, в которой они были бы родителями, я не могу. Но зачем обязательно запечатывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 13:59 |
|
||
|
Зачем Singleton-у sealed?
|
|||
|---|---|---|---|
|
#18+
student13, может потому что унаследовав синглетон мы сможем создавать множество объектов, по поведению идентичных базовому классу (который должен инстанцироваться только в одном экземпляре)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 14:39 |
|
||
|
Зачем Singleton-у sealed?
|
|||
|---|---|---|---|
|
#18+
TimeCoder, Логично. Чисто теоретически таким образом можно наплодить экзэмрляров этого одиночки, лишив тем самым его смысла существования :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 16:27 |
|
||
|
Зачем Singleton-у sealed?
|
|||
|---|---|---|---|
|
#18+
Я знаю, что такое синглтоны. Я вот, не знаю нафиг они нужны. Можно комменты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 17:25 |
|
||
|
Зачем Singleton-у sealed?
|
|||
|---|---|---|---|
|
#18+
ПС. Хотелось бы услышать комменты от практикующего программиста, а не от "теоретика". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 17:27 |
|
||
|
Зачем Singleton-у sealed?
|
|||
|---|---|---|---|
|
#18+
ShSerge, Есть у меня класс, отвечающий за логгирование. У меня нет никаких причин предполагать, что мне понадобится два или более параллельных лога в одной программе. Поэтому инстанс этого класса я делаю синглтоном (точнее, возвращаю для второй и последующей попытки создания объекта ссылку на первый созданный объект). Такой бизнес-кейс устроит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 17:41 |
|
||
|
Зачем Singleton-у sealed?
|
|||
|---|---|---|---|
|
#18+
arniShSerge, ...У меня нет никаких причин предполагать, что мне понадобится два или более параллельных лога в одной программе... А при чём здесь синглтон? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 17:48 |
|
||
|
Зачем Singleton-у sealed?
|
|||
|---|---|---|---|
|
#18+
ShSergeА при чём здесь синглтон?Если объект, должный существовать в единственном числе, это по вашему не синглтон, то далее нам нечего обсуждать. Ведь чтобы спорить, нужно иметь одинаковую понятийную базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 18:02 |
|
||
|
Зачем Singleton-у sealed?
|
|||
|---|---|---|---|
|
#18+
ShSerge, мне тоже нтересно узнать, почему не синглтон, а не статик? Только ли из-за красивого модного словца или во многих промышленных, коммерческих продуктах возникает необходимость играться с наследованием для одиночек? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 23:16 |
|
||
|
Зачем Singleton-у sealed?
|
|||
|---|---|---|---|
|
#18+
static != singltone статических инстанцев одного класса можно наплодить любое количество ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 01:09 |
|
||
|
Зачем Singleton-у sealed?
|
|||
|---|---|---|---|
|
#18+
Lepsik, я так думаю, товарищ имел ввиду статический класс. На первый взгляд, особой разницы нет: то ли вызвать у синглетона поле Instance, и дергать методы, то ли сделать все методы статическими, и дергать их напрямую (данные в классе тоже все статические). В обоих случаях решается основная цель синглетона: единая точка доступа. Объект статического класса C# создать не даст. Тут начинаются более тонкие различия, когда какой способ выбрать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 14:52 |
|
||
|
Зачем Singleton-у sealed?
|
|||
|---|---|---|---|
|
#18+
TimeCoderLepsik, я так думаю, товарищ имел ввиду статический класс. На первый взгляд, особой разницы нет: то ли вызвать у синглетона поле Instance, и дергать методы, то ли сделать все методы статическими, и дергать их напрямую (данные в классе тоже все статические). В обоих случаях решается основная цель синглетона: единая точка доступа. Объект статического класса C# создать не даст. Тут начинаются более тонкие различия, когда какой способ выбрать) Можно поподробнее об этих тонких отличиях и о ситуациях, в которых тот или иной более уместен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 15:13 |
|
||
|
Зачем Singleton-у sealed?
|
|||
|---|---|---|---|
|
#18+
student13ShSerge, мне тоже интересно узнать, почему не синглтон, а не статик? Статик классы имеют недостаток - работа с интерфейсами. Поэтому IoC к ним малоприменим. Поэтому для singleton классов я static не применяю. student13а тут его майкрософт рекомендует запечатывать А тут - это где? Я бы почитал сначала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 15:18 |
|
||
|
Зачем Singleton-у sealed?
|
|||
|---|---|---|---|
|
#18+
student13, чуть выше уже дали ответ. Да, хотя бы даже IoC. Без него ни один реальный enterprise-проект не строится. Идеалогия ООП проста: все есть объект. А статический класс - это что-то типа контейнера для методов. Это удобно, когда нужно дергать часто и много разных методов, как например Math.Sin, Math.Abs, Math.Pow. Писать Math.Instance.Sin было бы не удобно. И не логично, эти методы чаще всего вообще не используют данные, все нужное для их работы приходит в виде параметров метода. А вот если речь идет не просто о наборе несвязанных функций, а логически цельном объекте с данными, но который должен быть в одном экземпляре - то это синглетон. Класс настроек, класс для работы со звуком и пр. (GfxServer, SoundServer, PhysicsServer, ...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 15:38 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=50&tid=1341559]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
33ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 319ms |

| 0 / 0 |
