|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANA, Я 10 раз пишу, добавьте к ней | BindingFlags.Public... А еще лучше, замените рефлексию вот этим: private static readonly S instance = Activator.CreateInstance(typeof(S), nonPublic: true) as S; ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 20:03 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANAА, я понял в чём проблема. ТС хочет одного: чтобы везде в коде, где он вызвал Singleton<MyClass>.Instance, он получил бы один и тотже экземпляр типа MyClass. А там, где он в коде написано new MyClass(), он получил бы разные экземпляры. А ему говорят, что нельзя такого хотеть. В принципе такой подход я не рассматривал... но тоже оригинально :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 20:05 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий ВикторовичLelouch, да я боюсь , боюсь... жена и ребенок не требуют моего внимания и времени, я должен конечно убить как минимум пару вечеров чтобы понять а КАК ЖЕ работает эта гребаная, ну или аналогичная ей, строчка кода чтобы иметь возможность туда внести изменения при необходимости, дорогой мой помимо КОДА И КОМПЬЮТЕРА СУЩЕСТВУЕТ И ДРУГОЙ МИР!!! P. S. пишите код настолько ясно и понятно на сколько это возможно, а рефлексия ... этому не способствует Зато этому видимо очень способствует добавление способа выстрела себе в ногу путем создания экземпляра класса, который "внезапно" по вашей задумке является синглтоном. Хотите терять время для общения с женой и детьми на поддержку клиентов - ваше право) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 20:06 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Lelouch, ну зачем так мрачно то , клиентам не нужно знать КАК именно РЕШАЮТЬСЯ их задачи им нужен готовый РЕЗУЛЬТАТ :), а всю обвертку из десятков и сотен тысяч строк кода им не нужно показывать :), не... кто хочет тот пускай читает исходники я ж не запрещаю... но поверьте моему опыту им это нафиг не сдалось, да и баги есть были и будут всегда, не один человек от этого не застрахован, а по сути вопроса... если я вызову Singleton<TClass>.Instance у него будет поведение такое же как и предпологается у сингелтона :), и все ваши вопли о открытом конструкторе уходят в никуда, а если кто то будет использовать мой код :) ну пусть перед этим читает документацию по коду, и не пугается открытых конструкторов у TClass ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 20:13 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
LelouchВасилий ВикторовичLelouch, да я боюсь , боюсь... жена и ребенок не требуют моего внимания и времени, я должен конечно убить как минимум пару вечеров чтобы понять а КАК ЖЕ работает эта гребаная, ну или аналогичная ей, строчка кода чтобы иметь возможность туда внести изменения при необходимости, дорогой мой помимо КОДА И КОМПЬЮТЕРА СУЩЕСТВУЕТ И ДРУГОЙ МИР!!! P. S. пишите код настолько ясно и понятно на сколько это возможно, а рефлексия ... этому не способствует Зато этому видимо очень способствует добавление способа выстрела себе в ногу путем создания экземпляра класса, который "внезапно" по вашей задумке является синглтоном. Хотите терять время для общения с женой и детьми на поддержку клиентов - ваше право) и всеже для вас рефлексия - это серебряная пуля от всех проблем... мне вас жаль ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 20:15 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Во-первых, вы можете выпускать и библиотеки, я откуда знаю сферу ваших занятий? Во-вторых, ок, не клиент, а новый сотрудник, который не ожидает такого поведения от Синглтона. В-третьих, вот вариант без рефлексии: Код: c# 1.
Или у вас все, что выходит за рамки new MyClass() - уже избыточно? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 20:16 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий Викторович, А мне вас, такие проблемы со зрением иметь.. (еще на 1й странице сказал что не люблю рефлексию. Да и читать видимо тяжело, раз 2 страницы МСДН вызывают панику. Заодно и просмотрели способ через Activator в 1 посте на странице) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 20:18 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий ВикторовичLelouch, да я боюсь , боюсь... жена и ребенок не требуют моего внимания и времени, я должен конечно убить как минимум пару вечеров чтобы понять а КАК ЖЕ работает эта гребаная, ну или аналогичная ей, строчка кода чтобы иметь возможность туда внести изменения при необходимости, дорогой мой помимо КОДА И КОМПЬЮТЕРА СУЩЕСТВУЕТ И ДРУГОЙ МИР!!! P. S. пишите код настолько ясно и понятно на сколько это возможно, а рефлексия ... этому не способствует Правильно написаный код, редко нуждается в исправлении и этим экономит время Неправильно написаный, является причиной багов, частенько трудно диагностируемых (это я о анти-синглтоне, с открытым конструктором) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 20:22 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий ВикторовичLelouch, ну зачем так мрачно то , клиентам не нужно знать КАК именно РЕШАЮТЬСЯ их задачи им нужен готовый РЕЗУЛЬТАТ :), а всю обвертку из десятков и сотен тысяч строк кода им не нужно показывать :), не... кто хочет тот пускай читает исходники я ж не запрещаю... но поверьте моему опыту им это нафиг не сдалось, да и баги есть были и будут всегда, не один человек от этого не застрахован, а по сути вопроса... если я вызову Singleton<TClass>.Instance у него будет поведение такое же как и предпологается у сингелтона :), и все ваши вопли о открытом конструкторе уходят в никуда, а если кто то будет использовать мой код :) ну пусть перед этим читает документацию по коду, и не пугается открытых конструкторов у TClass вы совсем не понимаете? сказано же выстрел себе в ногу , а не клиенту ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 20:24 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Lelouch, против Activator.CreateInstance - я не имею ничего, но вот nonPublic:true явно показывает относиться к чему относиться Activator.CreateInstance, и не надо ля - ля про то что он относиться к пространству имен System, да относиться и что с того ?от перемены сум слагаемых сумма не меняется и рефлексией от этого он быть не перестает :) я вам говорил не про пространство имен System.Reflection а про принципиальный подход, а System.Reflection это просто инструменты, как и всеми инструментами им нужно уметь пользоваться!!! Повторюсь еще раз Рефлексия в данном случае НЕ ПРЕМЕНИМА!! так как тянет за собой пласт не нужных проблем!! Хотя что вам расказывать вы же апологет.... серебряной пули ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 20:27 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
pation, а ты попробуй изменить подход к шаблонам проектирования :) вдруг понравиться, вдруг поймешь что это не истина в последней инстанции, (черт... чуствую себя змеем искусителем ) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 20:30 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий Викторович, Рефлексия неприемлема потому что Василий Викторович ее не осилил) Ок. Я так думаю разговаривать про варианты сделать тоже самое через IoC контейнеры тоже лишнее, ведь они, сволочи, сложно устроены и тут избыточны (c). P.S. Про строчку, использующую рефлексию Вы говорили, что ее сложно понять и поддерживать. Видимо строчку с активатором тоже сложно понять и поддерживать(мне хватило саммари прочесть - nonPublic = true позволяет использование и закрытого и открытого конструкторов). Так что однозначный вывод - единственный правильный способ, это тот, который вы представили. А то что он вообще не позволяет создать синглтон - это нормально, важнее иметь возможность ничего не читать и не напрягать свою голову, забитую видимо детьми и женой. Я не против такого распределения времени, но смысл вашего поста можно свести к "зацените какой крутой способ, а те, кто говорит что он плох просто мне завидуют". P.P.S. Съезд на семью и занятость, неспособность посмотреть ссылку на мсдн, "боязнь" перед использованием рефлексии.... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 20:38 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий Викторовичpation, а ты попробуй изменить подход к шаблонам проектирования :) вдруг понравиться, вдруг поймешь что это не истина в последней инстанции, (черт... чуствую себя змеем искусителем ) откуда ты знаешь какой у меня к ним подход? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 21:07 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий Викторович, IMHO, Вам пытаются доказать, что шаблон Singleton не подразумевает наличия public конструктора, т.к. это в корне отличается от задумки именно ЭТОГО ШАБЛОНА, а Вы упорно пытаетесь доказать, что мир развивается, а посему х..рить шаблон можно, но пусть он при этом обзывается Singleton и используется как Singleton... И не лень было лопатить три страницы переливая из пустого в порожнее? Опять-же введя public конструктор, Вы порождаете ВОЗМОЖНОСТЬ создания второго экземпляра объекта и тем самым, опять-же, перечёркиваете идею именно этого шаблона... Ну если так хочется именно такое поведение, то не называйте это Singleton, назовите SemiSingleton... Тогда будет более понятно, что это такой хитровыкрученный класс, который вроде как и синглтон, но в то-же время имеет открытый конструктор (вот где в данном случае для шаблона синглтон, выстрел себе в ногу), который не желательно использовать ( и спрашивается, а занафига тогда он, этот открытый конструктор нужен, если его использовать нельзя ??? ). В общем, отвечу на поставленный вопрос так: имеет, покуда голова у того кто пользует такой шаблон на месте и абсолютно чётко осознаёт, что кто-нибудь (возможно даже из его команды) не сделает просто: Код: c# 1. 2. 3.
вместо: Код: c# 1. 2. 3.
Так что если есть желание херить шаблон - вперёд, но только не говорите, что это Singleton и будьте готовы к беготне за жуками в будущем... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 21:21 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Alex Kuznetsov, скажите мне, что означает следующая строчка из кода ТС: Код: c# 1.
Каким образом получится создать new Singleton<MySuperClass>()? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 21:42 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANA, Синглтоном должен вообще-то быть MyClass. В примере на вики например, чтобы не смущать, используют наследование. P.S. Поясните мне смысл такого "синглтона", который вы только что нарисовали? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 21:48 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Вообще, смысл этих примеров с генериками в том, чтобы получить ссылку на единственный объект параметра типа (T, TSource, etc), а не на сам Singleton<TSource>. Из кода это не очевидно? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 21:53 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Lelouch, берём код с вики и пишем: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66.
И кто кому что должен? И что, и где очевидно? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 22:06 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
LelouchВообще, смысл этих примеров с генериками в том, чтобы получить ссылку на единственный объект параметра типа (T, TSource, etc), а не на сам Singleton<TSource>. Из кода это не очевидно?Смотрите мой код выше. Вызов Singleton<MyClass>.Instance - это не ссылка на единственный объект параметра типа MyClass? Если конструктор типа MyClass сделать публичным, а реализацию Singleton<T> с вики заменить на реализацию ТС, ссылка будет не на единственный объект? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 22:09 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANA, А что в вашем примере MyClass синглтон, да? Статический метод Create вас не смущает? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 22:39 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
LelouchskyANA, А что в вашем примере MyClass синглтон, да? Статический метод Create вас не смущает?Нет, MyClass не синглтон. Статический метод Create меня не смущает. Вы мне ответьте на мои вопросы, будьте любезны. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 23:02 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANA, А Вы, непонимающий вы наш, сначала ДО КОНЦА пример на вики прочитайте. Может наконец поймете что должно быть синглтоном: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
На всякий случай сообщаю, что конец примера находится под комментарием "Использование Singleton" ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 23:14 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Ответ на ваш вопрос - ни то ни то не будет синглтоном ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 23:17 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Lelouch, и где использование-то, Вы видите? Где вызов TestProc()? Чем отличается вызов TestClass.Instance от Singleton<TestClass>.Instance? Зачем наследовать TestClass от Singleton<TestClass>? В моём примере я использовал код с вики так Singleton<MyClass>.Instance. Это означает, что я использовал не Singleton? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 23:22 |
|
|
start [/forum/topic.php?fid=20&msg=38199350&tid=1404938]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
5ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 309ms |
total: | 469ms |
0 / 0 |