|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Алексей КAlex KuznetsovIMHO - если много в проекте singleton-ов - переделывай архитектуру ибо кривая она возможно...Возможно, или кривая? Если кривая - то в каких случаях? Как количество синглетонов влияет на прямоту архитектуры?Возможно кривая За количество сильно не скажу, т.к. не было у меня проектов, где-бы мне приходилось использовать больше 5 Singleton-ов. А у Вас такие проекты были? Просто хочется понять практичность... PS. Прошу без срача и личных оскорблений, просто и по делу... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 10:40 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Alex KuznetsovПросто хочется понять практичность...Для этого нужно сравнить с аналогами: 1. static class с некоторыми оговорками. 2. DI-контейнер. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 11:13 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Alex KuznetsovВозможно криваяАрхитектура не может быть "возможно кривая". Она или кривая, или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 11:16 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Alex KuznetsovskyANAпропущено... Кхм... Чё?Кхм... - это мнение моё.... о практичности такого подхода к синглтонам... Корячиться с Generic-ами для того чтобы работать с шаблоном Singleton - по мне, так я для этого ленивый...Реализация на вики тоже с Generic-ами. А есть реализация через Lazy. Выбирайте, что Вам подходит. ТС вот Выбрал и не заметно, что особо корячится с этим. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 12:32 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANAРеализация на вики тоже с Generic-ами. А есть реализация через Lazy. Выбирайте, что Вам подходит. ТС вот Выбрал и не заметно, что особо корячится с этим. Да я и не собираюсь шубу на плечи через ноги одевать. Я как-то так привык: по старинке Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Опять-же я не отрицаю возможности использования Generics для реализации шаблона Singleton.... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 12:47 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Alex Kuznetsov, а какую реализацию Вы посоветуете, если где-то нужен синглтон инстанс класса, а где-то обычный? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 12:54 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANAAlex Kuznetsov, а какую реализацию Вы посоветуете, если где-то нужен синглтон инстанс класса, а где-то обычный? предложение противоречит само себе ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 13:23 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANAAlex Kuznetsov, а какую реализацию Вы посоветуете, если где-то нужен синглтон инстанс класса, а где-то обычный?skyANA, наводящий вопрос: что значит где-то? Это одно приложение или универсальная библиотека, которая может применяться для разных случаев? И в зависимости от применения библиотеки мы можем использовать либо синглтон, либо работать с ним как с обычным классом? Если это библиотека, то в документации к ней должно быть жирным по белому указано, что есть такая фича и Вы используете её на свой страх и риск и несёте за это ответственность. Но согласитесь, что это будет уже не чистый синглтон. А в одном единственном приложении порождать синглтон и такой-же не синглтон.... Ну тогда сильно необходимо ужесточить контроль над использованием разделяемых ресурсов... И опять-же это тоже не будет чистым синглтоном... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 13:25 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Alex Kuznetsov, вижу, что Вы плохо следили за дискуссией. В desktop-клиенте нужен синглтон инстанс класса, в web-клиенте нет. Что предложите? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 13:27 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Unity же предоставляет такую возможность. Как бы Вы реализовали? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 13:29 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANAAlex Kuznetsov, вижу, что Вы плохо следили за дискуссией. Здесь Вы не правы... По моему мой предыдущий ответ как раз таки и раскрывает ответ на Ваш следующий вопрос (он и был написан исходя из Ваших же ранних предложений)... skyANAВ desktop-клиенте нужен синглтон инстанс класса, в web-клиенте нет. Что предложите? Повторю ещё раз: подход описанный ТС имеет право на существование ( я этого нигде не отрицал ), просто надо называть вещи своими именами... Это уже не будет ЧИСТЫМ Singleton. Или Вы не согласны с таким утверждением? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 13:45 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Alex KuznetsovskyANAAlex Kuznetsov, вижу, что Вы плохо следили за дискуссией. Здесь Вы не правы... По моему мой предыдущий ответ как раз таки и раскрывает ответ на Ваш следующий вопрос (он и был написан исходя из Ваших же ранних предложений)... skyANAВ desktop-клиенте нужен синглтон инстанс класса, в web-клиенте нет. Что предложите? Повторю ещё раз: подход описанный ТС имеет право на существование ( я этого нигде не отрицал ), просто надо называть вещи своими именами... Это уже не будет ЧИСТЫМ Singleton. Или Вы не согласны с таким утверждением?Ну в реализации Unity также употребляется термин singleton, и насколько ЧИСТА та реализация никого почему-то не волнует. Реализация ТСа потокобезопасна и позволяет ему решать свои задачи без лишних телодвижений, следовательно ответ: Да. Тему думаю можно закрывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 13:54 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANA, следовательно ответ: да, но это не синглтон, а удобная ТСу реализация чего-то там) Приведите пример, что на клиенте должно вести себя как синглтон, а на сервере позволять множественное создание? Что мешает вам с помощью наследования сделать из обычного класса синглтон, закрыв конструктор, добавив реализацию статического свойства Instance? P.S. Немного подумав: Использование Unity не делает класс синглтоном (пока он имеет открытый конструктор), обеспечивая лишь такое-же поведение как недореализация ТСа. P.P.S. В n-й раз: Реализация ТСа плоха, в том числе, тем, что Требует от MyClass наличия открытого конструктора. То есть, если я, как разработчик MyClass, уверен что он должен быть синглтоном, то я не могу этого обеспечить, и оставляю на откуп дяде Васе, что он никогда не создаст его экземпляр. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 14:15 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANAUnity же предоставляет такую возможность. Как бы Вы реализовали? Без использования Unity могу предложить реализовать что-то типа вот такого: через базовый абстрактный класс, реализующий бизнес логику Код: 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.
Ну и понятно, что MyBasePseudoSingleton никоим образом не реализует шаблон Singleton. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 14:16 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
LelouchskyANA, следовательно ответ: да, но это не синглтон, а удобная ТСу реализация чего-то там) Приведите пример, что на клиенте должно вести себя как синглтон, а на сервере позволять множественное создание? Что мешает вам с помощью наследования сделать из обычного класса синглтон, закрыв конструктор, добавив реализацию статического свойства Instance? P.S. Немного подумав: Использование Unity не делает класс синглтоном (пока он имеет открытый конструктор), обеспечивая лишь такое-же поведение как недореализация ТСа. P.P.S. В n-й раз: Реализация ТСа плоха, в том числе, тем, что Требует от MyClass наличия открытого конструктора. То есть, если я, как разработчик MyClass, уверен что он должен быть синглтоном, то я не могу этого обеспечить, и оставляю на откуп дяде Васе, что он никогда не создаст его экземпляр.У ТС MyClass реализует некую бизнес-логику. А уж как эта логика используется, как Singleton, или как Singlecall, от класса не зависит. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 15:08 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANA, Если эта логика должна быть реализована как синглтон и никак иначе, то что мне делать с реализацией ТСа? Она мне этого не обеспечит ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 15:21 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Lelouch, ну Вы же используете Unity, одной строкой Вы делаете то, что Вам надо, при этом класс Logger ни фига не синглтон и может быть создан через фабрику. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 15:28 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Но так как у вас принято соглашение работать только через IoC, то Вас это не волнует. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 15:29 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANA, Во-первых, у него теперь закрытый конструктор) Во-вторых, я не прихожу на форум со словами "зацените мою реализацию синглтона", понимая, что опираюсь именно на договоренность работы через Unity. В-третьих, реализация ТС ограничивает мои возможности создать синглтон ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 15:42 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Еще раз обращаю ваше внимание: вики Гарантирует , что у класса есть только один экземпляр. Реализация ТС не только не гарантирует этого, она требует разрешить создание объектов (открытый конструктор). О каком синглтоне может идти речь? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 15:48 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
LelouchskyANA, Во-первых, у него теперь закрытый конструктор)У кого у него? :) Вы прикалываетесь? Обновил версию Unity - перепиши свои классы! Они устрианили ошибку, что возникала, если конструктор НЕ открытый. То есть с открытым конструктором всё прекрасно работало, и я думаю и сейчас также прекрасно продолжает работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 16:43 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANA, Можете и не переписывать. К теме относится слабо. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 17:01 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANA, Прикалываетесь тут вы, называя наличие свойства, возвращающего ссылку на глобальный экземпляр MyClass синглтоном MyClass ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 17:02 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
LelouchskyANA, Можете и не переписывать. К теме относится слабо.Почему слабо? Реализация Unity также не гарантирует, что класс не будет создан через прямой вызов конструктора, или через фабрику. Однако на практике это мало кого волнует. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 17:20 |
|
|
start [/forum/topic.php?fid=20&msg=38202724&tid=1404938]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 161ms |
0 / 0 |