|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Lelouch, уж поверьте мне Рефлексии я не боюсь :), просто это не оправдано глупо ее так использовать, вот кое что из старого моего проекта чтобы кто - не кричал о том что я боюсь рефлексии , надеюсь слышали про формат медицинских документов HL7? :) Код: 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. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84.
Просто ещераз в n - раз повторюсь Рефлексия не есть серебряная пуля :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 23:29 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий ВикторовичХочеться узнать мнение сообщества :) имеет ли право существовать такой подход?:) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
это не синглтон. С тем же успехом сделайте словарь типа обджект и заусньте туда любой объект и назовите это все синглтонам по типу(например ключь типа Type). Бред же ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 23:31 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANA, Ссылка будет одна и таже, синглтоном оно от этого не станет. skyANALelouch, и где использование-то, Вы видите? Где вызов TestProc()? Чем отличается вызов TestClass.Instance от Singleton<TestClass>.Instance? Зачем наследовать TestClass от Singleton<TestClass>? В моём примере я использовал код с вики так Singleton<MyClass>.Instance. Это означает, что я использовал не Singleton? То есть, даже после внимательного прочтения, вы не поняли, что состояние, которое должен содержать синглтон, находится в TestClass? И именно он должен быть синглтоном. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 23:32 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий Викторович, и смысл этого кода? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 23:38 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
LelouchskyANA, Ссылка будет одна и таже, синглтоном оно от этого не станет. skyANALelouch, и где использование-то, Вы видите? Где вызов TestProc()? Чем отличается вызов TestClass.Instance от Singleton<TestClass>.Instance? Зачем наследовать TestClass от Singleton<TestClass>? В моём примере я использовал код с вики так Singleton<MyClass>.Instance. Это означает, что я использовал не Singleton? То есть, даже после внимательного прочтения, вы не поняли, что состояние, которое должен содержать синглтон, находится в TestClass? И именно он должен быть синглтоном.Напишите код, получающий это состояние. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 23:46 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Lelouch, мдя...а почему вы считаете что ИМЕННО TClass ну просто ОБЯЗАН реализовывать обвязку сингелтона? почему мой вариант вас смущает? только то что все вокруг с упорством барана твердят о том что у сингелтона ну просто ОБЯЗАН БЫТЬ закрытый конструктор??? мдя... Знаете перечитайте ка ещераз GoF и Фаулера, может тогда мозги в порядок приведете, в частности в GoF сказано что они предлагают РЕКОМЕНДОВАННЫЙ СПИСОК РЕШЕНИЙ ТИПИЧНЫХ ЗАДАЧ , выделил жирным шрифтом спецально для Вас кстати не забываем и про Утиную Типизацию которая гласит что «Если оно выглядит как утка, плавает как утка и крякает как утка, то это, наверное, и есть утка» , а мой Singelton<TClass>.Instance ну ни каким поведением от синглтона не отличается и КАЖДЫЙ РАЗ когда вы запросите Singelton<TClass>.Instance вы получите ссылку на ОДИН И ТОТ ЖЕ ОБЬ ЕКТ :) спорить будем дальше? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 23:47 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Lelouch, о смысл этого кода а вы присмотритесь внимательно может и найдете что то удивительное ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 23:48 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий Викторович, по всей видимости для камрада Lelouch TestClass.Instance и Singleton<TestClass>.Instance - это два разных состояния. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2013, 23:52 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
SkyANA Нет конечно. А для вас класс с публичным конструктором - Singleton? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 00:01 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий Викторович, Вы получаете список свойств "сегмента", тип которых является Generic`ом и они помечены кастомным атрибутом UsedAttribute. (Судя по дальнейшему использованию, это коллекции?). После чего берете все статические поля, помеченные атрибутом FunctorAttribute (возможно, это ф-ии, берущие элемент сегмента по номеру?), + "создаете" GenericMethod из ForeachCollection, передавая ему в качестве параметров типа Тип элементов коллекции TValue и выходной тип functor'a. Что делает SetFieldValue не очень видно, кроме того, что она в свою очередь вызывает ForeachCollection для дочерних коллекций сегмента. Я думаю что где то я ошибаюсь, но всего кода не видно в любом случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 00:01 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANA, Что из этого Singleton? Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 00:02 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Test1 или Test2? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 00:03 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий Викторович, А вы не умеете читать определение авторSingleton - Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа. Существенно то, что можно пользоваться именно экземпляром класса, так как при этом во многих случаях становится доступной более широкая функциональность. Например, к описанным компонентам класса можно обращаться через интерфейс, если такая возможность поддерживается языком. Что, ваш код Гарантирует, что MyClass имеет 1 и только 1 экземпляр: ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 00:05 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Ваш код выполняет только 2е - предоставляет глобальную точку доступа, единственность экземпляра MyClass не гарантируется ни разу. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 00:06 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Lelouch, напишите код, что создаёт два различных экземпляра типа Singleton<MyClass>. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 00:13 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANA, А ответ на вопрос какой? (c) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 00:15 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Lelouch, слона вы таки и не приметили Код: c# 1. 2. 3. 4.
указываю для невнимательных :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 00:16 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Lelouch, Вот в этом и опасность смешивания шаблонов проектирования с реальными классами, реальная логика шаблона размазываеться по всему классу и так с наскока не скажешь толь фабрика пред тобой то ли сингелтон ... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 00:20 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Я уже несколько раз пытался донести до вас мысль, что синглтоном в примере на вики является TestClass. В единственности Singleton<TestClass> нет никакого смысла , потому что все, что он предоставляет - доступ к эвземпляру TestClass. Если TestClass управляет каким то состоянием, которое должно быть общим, например, для всех нитей приложения, то монопенисуально, что Singleton<TestClass> - единственный. Каждая нить (при криворуком программисте) может создать себе свой экземпляр TestClass и взять состояние оттуда. То что при этом оно НИКАК не будет относится к общему состоянию нитей - это нормально? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 00:20 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий Викторович, Если таких свойств или методов нет, рекурсия завершается. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 00:21 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
LelouchskyANA, А ответ на вопрос какой? (c) Код: c# 1.
И где Ваш пример использования из вики гарантирует единственность экземпляра? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 00:21 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Lelouch, оставьте, вы не достучитесь) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 00:24 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
LelouchЯ уже несколько раз пытался донести до вас мысль, что синглтоном в примере на вики является TestClass. В единственности Singleton<TestClass> нет никакого смысла , потому что все, что он предоставляет - доступ к эвземпляру TestClass. Если TestClass управляет каким то состоянием, которое должно быть общим, например, для всех нитей приложения, то монопенисуально, что Singleton<TestClass> - единственный. Каждая нить (при криворуком программисте) может создать себе свой экземпляр TestClass и взять состояние оттуда. То что при этом оно НИКАК не будет относится к общему состоянию нитей - это нормально?Бла-бла-бла. Смотрим код выше. Вот я криворукий программист не нашёл у класса TestClass публичного конструктора и заюзал Activator. Где Вы что гарантировали? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 00:24 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANAБла-бла-бла. Смотрим код выше. Вот я криворукий программист не нашёл у класса TestClass публичного конструктора и заюзал Activator. Где Вы что гарантировали? демогогия ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 00:26 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий Викторович, От этого шаблон не меняется. И все эти GoF и Фаулеры говорят не то что "называйте синглтоном, даже если оно ведет себя как фабрика", а то что вы должны применять шаблон как вам удобно. Просто не надо называть это реализацией шаблона. Это что то типа "реализация шаблона, обеспечивающего использование единственного объекта, а так же возможность их создания при необходимости применительно к моей задаче". Похожее поведение есть и у МС, например HttpContext имеет свойство Current, но так же позволяет создавать новые экземпляры. Кстати он не является Singleton`ом в любом случае, потому что у каждого запроса он свой. Конкретно ваш пример плох только тем, что если мне действительно потребуется Singleton, у которого нет возможности создать еще 1 экземпляр, то сделать это я не смогу. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 00:29 |
|
|
start [/forum/topic.php?fid=20&msg=38199596&tid=1404938]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 312ms |
total: | 460ms |
0 / 0 |