|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий ВикторовичDenis., этого эксперемента не проводил, прав ты или нет утверждать не буду :) нужно посмотреть как отреагируют тесты :) какого эксперимента? Какие тесты? В статическом классе поле доступное только для чтения инициализированное в конструкторе.о каких тестах речь идти может? Вы не можете менять поле, объект только один, глобально доступен. Синглтон? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 02:50 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANA, и что от этого изменится, кроме того, что с новой версией сборки ваш код перестанет компилироваться? вы вольны остаться на старой версии, или заменить вызовы new MyClass() на MyClass.Instance. BTW у МС например, как я писал выше, есть классы с таким поведением (есть Current, но можно создать новый экземпляр). Просто Singleton они не являются. Кстати, если произойдет такая замена, возможна ситуация, что MyClass перестал допускать возможность массового создания - то есть ваш код полностью валиден для старой версии сборки. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 02:51 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Lelouch, а Вы так и не объяснили почему Singleton<MyClass> - это не синглтон. У него может быть только один экземпляр и к нему есть глобальная точка доступа - свойство Instance. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 02:52 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Denis.Василий Викторовичпропущено... да я считаю так считаю ибо я предоставил глобальную точку доступа с единственным доступным для этой точки доступа экземпляром класса TClass к тому же потокобезопасным , на этом моя зона ответственности заканчиваеться и я не отвечаю за то что взбредет в голову какому нибудь Петру Сергеевичу, который создаст из моего класса TClass еще 1 экземпляр, он сам ССЗБ, пусть перед использованием читает документацию к тому что использует не могу написать код так как с телефона. Если я сделаю статический класс в котором сделаю поле некого типа инициализирую его в статическом конструкторе и предоставлю к нему только геттер это синглтон? Удовлетворяет твоему определению полностью. Синглтон? немогу утверждать что это будет сингелтон в привычном понимании... но то что тесты выдают один и тот же GetHashCode() это факт ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 02:52 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
LelouchВасилий Викторович, Вы, как автор библиотеки, назвав Singletonом то, что понимаете как Singleton только вы и примкнувший к вам Шипилов SkyANA, дали мне лишний способ выстрелить себе в ногу. Если, например, вы поставляете сборку без исходников и с плохой документацией, то, задолбавшись искать ошибку, я откажусь от нее в пользу решения, в котором не буду испытывать проблем. это ваше право :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 02:52 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
LelouchskyANA, и что от этого изменится, кроме того, что с новой версией сборки ваш код перестанет компилироваться? вы вольны остаться на старой версии, или заменить вызовы new MyClass() на MyClass.Instance .И пользователи web-приложения начнут ловить интереснейшие глюки ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 02:55 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANA, Потому что на самом деле доступом к ресурсу, одному на все нити, управляет MyClass, а не Singleton<MyClass>. Если вы не запретите создавать свои экземпляры MyClass, кто-то может поиметь много трудновыявляемых проблем, если создаст его экземпляр, и начнет "общаться" с ресурсом через него, при том, что Ваши собственные ф-ии будут продолжать использовать Singleton<MyClass>. Для них ресурс будет синхронизирован, для кода этого "кого-то" нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 02:55 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANA, с чего бы? вы сборку на сервере без тестов поменяете? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 02:55 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Denis, Я знаю что статический клас не дает обратиться по указателю this (указатель сам на себя) но может вам в данном случае это и не нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 02:56 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий Викторович, "немогу утверждать что это будет сингелтон в привычном понимании... но то что тесты выдают один и тот же GetHashCode() это факт " что здесь несинглтоновского в привычном понимании? Ты сказал что такое синглтон. Код который я описал удовлетворяет твоему определению. Что здесь непривычного ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 02:58 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANA, или, например, у new MyClass() будет своя копия "ресурса" (например, список результатов вычисления), у Singleton<MyClass> своя. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 02:59 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Denis., :) хорошо я скажу что это сингелтон с ограничеными возможностями :) (вроде использования только статических функций) тебя это устроит?:) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 02:59 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
LelouchskyANA, или, например, у new MyClass() будет своя копия "ресурса" (например, список результатов вычисления), у Singleton<MyClass> своя. это тоже самое что у вас своя ветка проекта а у Вси пупкина форк :) смысл от этого не поменяеться, хотите поведение сингелтона, используйте глобальнуй точку доступа, если не используете это ваши проблемы ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 03:02 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
LelouchskyANA, Потому что на самом деле доступом к ресурсу, одному на все нити, управляет MyClass, а не Singleton<MyClass>.Не MyClass, а экземпляр MyClass.LelouchЕсли вы не запретите создавать свои экземпляры MyClass, кто-то может поиметь много трудновыявляемых проблем, если создаст его экземпляр, и начнет "общаться" с ресурсом через него, при том, что Ваши собственные ф-ии будут продолжать использовать Singleton<MyClass>. Для них ресурс будет синхронизирован, для кода этого "кого-то" нет.Я же Вам пишу, что в desktop мне нужен Singleton<MyClass>, а в web каждый реквест должен работать со свои экземпляром MyClass. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 03:02 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий Викторович, в моей сборке у человека или не будет возможности создать свой экземпляр MyClass, или не будет такой фигни как Singleton<MyClass>. Максимум будет, например, нитезависимый MyClass.Current . Но я даже в пьяном бреду не назову его Singleton`ом ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 03:04 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
LelouchskyANA, или, например, у new MyClass() будет своя копия "ресурса" (например, список результатов вычисления), у Singleton<MyClass> своя.Дак в вот в web у реквеста и должна быть своя копия "ресурса". Если один реквест получит доступ к ресурсам другого реквеста, то будет весело. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 03:06 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
2) Ну вы будете вынуждены или остаться на старой версии, или перейти на другое решение. Или воспользоваться skyANAМаксимум будет, например, нитезависимый MyClass.Current . Но я даже в пьяном бреду не назову его Singleton`ом на клиенте. (если MyClass перестанет быть Singleton'ом). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 03:08 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
skyANA, То есть, вы считаете что HttpRequest.Current -синглтон?) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 03:08 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
HttpContext.Current * ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 03:09 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий ВикторовичDenis., :) хорошо я скажу что это сингелтон с ограничеными возможностями :) (вроде использования только статических функций) тебя это устроит?:) таким образом у некого класса (или экземпляра что не принципиально ) есть поле недоступное для изменения и как ты только что подтвердил это синглтон. Таким образом static class myclass{public int singleton{get{return 10;}} это синглтон так как "я предоставил глобальную точку доступа с единственным доступным для этой точки доступа экземпляром класса TClass к тому же потокобезопасным ". Как известно глобальность относительна таким образом любой класс или объект предоставляющий поле для чтения синглтон. Поздравляю, вы от лично поняли суть паттерна и не зашорены как остальные ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 03:09 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Lelouch, т. е. вы за другого человека считает что ему хорошо а что плохо?:), вы просто не умеете признавать свои поражения, тесты вам были предоставлены, экземпляр TClass полученые через Singelton<TClass>.Instance в разных потоках идентичны, а значит Singelton<TClass>.Instance ведет себя как синглтон а это самое важное в данном споре, а то кто то может создать новый экземпляр TClass относиться к моему коду и комне точно так же как форк вашей библиотеки Петром Сергеевичем к вам :) мало ли чего захочет сторонний разработчик? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 03:10 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Denis., нет просто мы смотрим на один и тот же объект под разными углами :) вы сторонник строгого поведения :) я сторонник утиной типизации, т. к. она позволяет рассмотреть систему более глобально чем если считать все строгим и статичным ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 03:14 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Василий Викторович, я ничего не решаю, ваша реализация синглтона эквивалентна статическому полю без возможности перезаписи. Кстати, как вы сами сказали, getter свойства всего-лишь метод, так что вот такой код тоже синглтон: ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 03:14 |
|
Имеет ли право существовать такой подход к сиглетону?
|
|||
---|---|---|---|
#18+
Пардон. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 03:15 |
|
|
start [/forum/topic.php?fid=20&msg=38199761&tid=1404938]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
68ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 186ms |
0 / 0 |