powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Имеет ли право существовать такой подход к сиглетону?
25 сообщений из 306, страница 7 из 13
Имеет ли право существовать такой подход к сиглетону?
    #38199713
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis., а что здесь есть set?:)
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public class Singleton
{
  /// Защищенный конструктор нужен, чтобы предотвратить создание экземпляра класса Singleton
  protected Singleton() { }
 
  private sealed class SingletonCreator
  {
    private static readonly Singleton instance = new Singleton();
    public static Singleton Instance { get { return instance; } }
  }
 
  public static Singleton Instance
  {
    get { return SingletonCreator.Instance; }
  }
 
}



Поле для чтения это просто функция которая возвращает обьект заданого типа, будет ли при этом этот объект сингелтоном вопрос спорный :)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199716
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchskyANA,

имея ввиду что сборка с Logger поставляется в составе продукта (она подписана ключом издателя заодно), и, месяцев 5 назад, пока я там работал, я следил за ее состоянием, поверите ли вы мне, что на тот момент там таких вызовов не было?Поверю. Но что запретит новому человеку, кто будет следить за сборкой, написать new Logger() ?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199718
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий ВикторовичDenis., а что здесь есть set?:)
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public class Singleton
{
  /// Защищенный конструктор нужен, чтобы предотвратить создание экземпляра класса Singleton
  protected Singleton() { }
 
  private sealed class SingletonCreator
  {
    private static readonly Singleton instance = new Singleton();
    public static Singleton Instance { get { return instance; } }
  }
 
  public static Singleton Instance
  {
    get { return SingletonCreator.Instance; }
  }
 
}



Поле для чтения это просто функция которая возвращает обьект заданого типа, будет ли при этом этот объект сингелтоном вопрос спорный :)
в вашем определении вы ничего не говорили про сет. Поясните что должно быть с сетом чтобы получился синглтон?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199721
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Доступ к ее коду новоприбывший Вася Пупкин не имеет. Она используется в нескольких проектах, туда, в мое время, имело доступ 3 человека, 1 - только на чтение.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199722
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.,
Шутку юмора оценил :), но ты видимо приписочку в конце кода не прочитал, Поле для чтения (get) это просто функция которая возвращает обьект заданого типа, будет ли при этом этот объект сингелтоном вопрос спорный :)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199723
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch,

кхм... а если вы пару таких (или аналогичных) проектов на githab'е выложите? тоже отвечать за каждый чих Петра Семеновича будете?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199724
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchskyANA,
Доступ к ее коду новоприбывший Вася Пупкин не имеет. Она используется в нескольких проектах, туда, в мое время, имело доступ 3 человека, 1 - только на чтение.То есть запрет чисто организационный, ясно.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199725
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Вот так наш милый друг Lelouch решает программистские проблемы на запрет создания экземпляров сингелтона :) не код корректный пишет а бюрократией балуется, "ты туда не лезь, а то мы сделаем тебе атата"
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199726
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

никакого юмора, ты сказал что синглтон это:
предоставляет доступ к единственному экземпляру класса TClass, который ему доступен.

я указал что таким поведением обладает любое неизменяемое поле.

ты спросил что есть сет.
я спрашиваю причем тут сет? Если он важен в определении синглтона просьба добавить его и написать еще раз что такое синглтон с твоей точки зрения(с учётом сета)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199727
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
public class MyForm : Form
{
    private readonly someInstance = Singleton<MyClass>.Instance;
}

Сколько бы форм типа MyForm не было открыто someInstance ссылается на один и тотже экземпляр типа MyClass. Но Singleton<MyClass> - это не синглтон. Забавно получается.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199728
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

Нет, не буду принимать pull реквесты от других людей, кроме вариантов Code Review / большого доверия. Если кто-то начнет использовать форк - не моя проблема.
Своим "клиентам" я, соответственно, обеспечу минимальный шанс выстрелить себе в ногу.

P.S. но это все теория, я не занимаюсь свободными библиотеками. Те что писал - только для использования в корпоративных проектах, на GitHub / CodePlex они скорее всего никогда не попадут.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199729
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.я указал что таким поведением обладает любое неизменяемое поле.Смотрим сюда:
Код: c#
1.
2.
3.
4.
public class MyForm : Form
{
    private readonly someInstance = new MyClass();
}

и смотрим код выше.

Чувствуем разницу? В обоих случаях поле неизменяемое.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199730
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.,

потому как в указаной реализации сингелтона уже есть неизменяемый get если ты этого не заметил.... прости, и еще тебе ничего не говорит вот это?:)
Код: c#
1.
{get; protected set;}

вроде и поле доступно только для чтения да не совсем :) еще раз повторяю для НЕПОНЯТЛИВЫХ
Код: c#
1.
{get;}

это просто функция которая возвращает обьект заданого типа, будет ли при этом этот объект сингелтоном вопрос спорный :), может будет а может и нет :)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199732
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANADenis.я указал что таким поведением обладает любое неизменяемое поле.Смотрим сюда:
Код: c#
1.
2.
3.
4.
public class MyForm : Form
{
    private readonly someInstance = new MyClass();
}

и смотрим код выше.

Чувствуем разницу? В обоих случаях поле неизменяемое.
не чувствую. Делаем поле публичным. Удовлетворяет:
"предоставляет доступ к единственному экземпляру класса TClass, который ему доступен."?
да удовлетворяет.
пытаюсь добиться внятного определения чтоб был предмет разговора.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199734
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Угу.
Ньюфаг, поняв, что Singleton<MyClass>.Instance.GetResource(), вызываемый в BackgroudWorker работает медленно (из-за блокировок, например, при обращении к ресурсу), не подумав, создаст в нем новый экземпляр MyClass (ведь это не запрещено). Самое интересное, что это не приведет, скорее всего, к моментальному краху приложения, падать оно будет в зависимости от фазы луны и брачной активности тушканчиков.

Да, он ССЗБ. Правда, лично я, за такую возможность, первым делом спросил у автора синглтона, что за фигню он создал.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199736
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий ВикторовичDenis.,

потому как в указаной реализации сингелтона уже есть неизменяемый get если ты этого не заметил.... прости, и еще тебе ничего не говорит вот это?:)
Код: c#
1.
{get; protected set;}

вроде и поле доступно только для чтения да не совсем :) еще раз повторяю для НЕПОНЯТЛИВЫХ
Код: c#
1.
{get;}

это просто функция которая возвращает обьект заданого типа, будет ли при этом этот объект сингелтоном вопрос спорный :), может будет а может и нет :)
попробуйте собраться и еще раз. Коротко. Что такое синглтон в твоем понимании. Ты написал "предоставляет доступ к единственному экземпляру класса TClass, который ему доступен". Все еще считаешь это определение достаточным?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199737
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, ууу значит вы снимаете с себя ответственность если кто-то будет юзать форк вашей либы.... а тогда чем это отличается от того что я намеренно предостовляю интерфейс глобальной точки Singelton<TClass>.Instance и я не несу ответственности за то что если какой либо Петр Сергеевич "форкнет" мой класс (либу) и сделает TClass element = new TClass()?:)
вот почему ваше дистанцирование от "форка" более правельное чем мое? Я так понимаю проблема в тех шорах и блоках что стоят у вас в голове или я не прав?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199738
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

в моем случае я "отвечаю" за ту библиотеку, которую предоставляю. Форк предоставляю не я, как я могу за него отвечать? Это все равно что Торвальдс будет отвечать на все сборки Линукс.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199739
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дистрибутивы*
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199741
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DenisТы написал "предоставляет доступ к единственному экземпляру класса TClass, который ему доступен". Все еще считаешь это определение достаточным?
да я считаю так считаю ибо я предоставил глобальную точку доступа с единственным доступным для этой точки доступа экземпляром класса TClass к тому же потокобезопасным , на этом моя зона ответственности заканчиваеться и я не отвечаю за то что взбредет в голову какому нибудь Петру Сергеевичу, который создаст из моего класса TClass еще 1 экземпляр, он сам ССЗБ, пусть перед использованием читает документацию к тому что использует
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199742
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, Вот точно также я немогу отвечать за то что Вам в голову стукнет желание сделать еще 1 экземпляр класса TClass, единую точку доступа с единственным доступным экземпляром я вам предоставил? Singelton<TClass>.Instance- предоставил, а дальше не моя ответственность, ну и что с того что у TClass открытый конструктор? у 95% классов он открыт в той или иной степени
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199743
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий ВикторовичDenisТы написал "предоставляет доступ к единственному экземпляру класса TClass, который ему доступен". Все еще считаешь это определение достаточным?
да я считаю так считаю ибо я предоставил глобальную точку доступа с единственным доступным для этой точки доступа экземпляром класса TClass к тому же потокобезопасным , на этом моя зона ответственности заканчиваеться и я не отвечаю за то что взбредет в голову какому нибудь Петру Сергеевичу, который создаст из моего класса TClass еще 1 экземпляр, он сам ССЗБ, пусть перед использованием читает документацию к тому что использует
не могу написать код так как с телефона. Если я сделаю статический класс в котором сделаю поле некого типа инициализирую его в статическом конструкторе и предоставлю к нему только геттер это синглтон? Удовлетворяет твоему определению полностью. Синглтон?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199745
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchskyANA,

Угу.
Ньюфаг, поняв, что Singleton<MyClass>.Instance.GetResource(), вызываемый в BackgroudWorker работает медленно (из-за блокировок, например, при обращении к ресурсу), не подумав, создаст в нем новый экземпляр MyClass (ведь это не запрещено). Самое интересное, что это не приведет, скорее всего, к моментальному краху приложения, падать оно будет в зависимости от фазы луны и брачной активности тушканчиков.

Да, он ССЗБ. Правда, лично я, за такую возможность, первым делом спросил у автора синглтона, что за фигню он создал.О, переходим к практическому применению.
Я например использую одну и туже сборку и в desktop, и в web. В desktop: Singlton<MyClass>.Instance, в web: new MyClass().
Круто будет, если MyClass вдруг станет MyClass : Singleton<MyClass>.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199748
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.,

этого эксперемента не проводил, прав ты или нет утверждать не буду :) нужно посмотреть как отреагируют тесты :)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199749
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

Вы, как автор библиотеки, назвав Singletonом то, что понимаете как Singleton только вы и примкнувший к вам Шипилов SkyANA, дали мне лишний способ выстрелить себе в ногу. Если, например, вы поставляете сборку без исходников и с плохой документацией, то, задолбавшись искать ошибку, я откажусь от нее в пользу решения, в котором не буду испытывать проблем.
...
Рейтинг: 0 / 0
25 сообщений из 306, страница 7 из 13
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Имеет ли право существовать такой подход к сиглетону?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]