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

        public static TClass Instance
        {
            get { return SingletonClassCreator.Instance; }
        }
    }
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38198813
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,
Нет, singleton должен существовать в единственном экземпляре, а у вас можно на создавать сколько угодно.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38198874
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38198997
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т. е. совместить шаблонный метод и синглтон нельзя?:) но почему?
1) в данном случае все очевидно, для шаблона типа TClass создается единая точка входа
2) код синглтона пишется 1 раз а потом просто подставляются необходимые типы... вместо того чтобы на каждый класс - синглтон прописывать код который подобен коду приведенному в википедии, логика размазывается однако, и поддержка становиться тяжелее
3) при этом сохраняется возможность создать экземпляр класса если очень хочется, т. к. многие ругают синглтон за то что как раз и нельзя создать еще экземпляры
4) да это похоже на фабрику с тем отличием, что в фабрике можно получить много экземпляров а тут только 1
5) Приветствую критику но только конструктивную, а не в "стиле ты не знаешь зачем нужны шаблоны и. т. д.", что такое щаблоны я знаю и в своем коде успешно ими пользуюсь, просто не забывайте что таже банда 4 говорила о том что она предоставляет рекомендации к решениям распространенных задач, а если это только рекомендации то и немного их изменять позволительно, а не так как "шаг влево, шаг в право - побег, прыжок на месте - провокация"
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199013
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВВасилий Викторович,
Нет, singleton должен существовать в единственном экземпляре, а у вас можно на создавать сколько угодно.
обьявите protected конструктор в классе который замещает шаблонный тип в данном варианте синглтона и все... вот вам и поведение стандартного синглтона, какие проблемы? обьявить protected конструктор на много проще чем тащить в класс всю инфра структуру синглтона, ладно если подобных класов 1-2 на проект а если их будет штук 10-15? не замучаетесь каждый раз писать одно и тоже?:)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199016
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

1) В Википедии тоже шаблон, они просто не требуют наличия открытого конструктора. Так что видимо вы не читали, но осуждаете.
2) Добавьте в пример на вики | BindingFlags.Public (если не путаю) и можно будет использовать и открытый конструктор
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199019
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович, с конструктором погорячился каюсь, но всеже почему этот вариант плох?:)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199031
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

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

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

Читал, на вики тоже есть пример с шаблоном, я не могу понять почему вы в нем тех же возможностей не видите.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199091
Фотография 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.
/// <summary>
/// This is a thread-safe, lazy singleton.
/// See http://www.yoda.arachsys.com/csharp/singleton.html for more details about its implementation.
/// </summary>
public class Singleton<T> where T : new()
{
    protected Singleton()
    {
    }

    public static T Instance
    {
        get { return Nested.SingletInstance; }
    }

    private class Nested
    {
        static Nested()
        {
        }

        internal static readonly T SingletInstance = new T();
    }
}

Советую сходить по ссылке
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199093
SerP1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нормальный вариант, для своих задач. Я его использую, когда делаю какой-то прототип или наколенную поделку. То есть, я точно знаю, что каждый сервис будет иметь только одну реализацию и мне не нужны еще какие-то реализации для тестирования.
Вот вариант Singleton, найденный на просторах интернета, мне он больше понравился)):
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
    class Singleton<T> where T : class, new()
    {
        Singleton() { }

        private static readonly Lazy<T> instance = new Lazy<T>(() => new T());

        public static T Instance { get { return instance.Value; } }
    }



Ну а если вдруг поделка превратится в что-то стоящее, с реализацией менно такого Singleton легко перепрыгнуть на IoC.
Пример:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
// bootstrapper
var tfsServer = "http://...";
var sqlConnectionInfo = new SqlConnectionInfo { ServerName = @"..." };

Singleton<TraceService>.Instance.Init(sqlConnectionInfo, @"Data\trace.tdf");
Singleton<SqlService>.Instance.Init(sqlConnectionInfo);
Singleton<TfsService>.Instance.Init(tfsServer);

// где-то все это собираем
private TraceService TraceService;
private SqlService SqlService;
private TfsService TfsService;

public Facade()
{
   TraceService = Singleton<TraceService>.Instance;
   SqlService = Singleton<SqlService>.Instance;
   TfsService = Singleton<TfsService>.Instance;
}
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199095
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответ на вопрос в заголовке топика - Да.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199098
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SerP1983Вот вариант Singleton, найденный на просторах интернета, мне он больше понравился:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
    class Singleton<T> where T : class, new()
    {
        Singleton() { }

        private static readonly Lazy<T> instance = new Lazy<T>(() => new T());

        public static T Instance { get { return instance.Value; } }
    }

Это Sixth version - using .NET 4's Lazy<T> type .
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199099
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, потому что код использует рефлексию, а поверьте моему опыты рефлексия не есть "серебряная пуля", кто любит обвешиваться и поддерживать рефлексию флаг ему в руки
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199107
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А причем тут "серебряная пуля"? Чем в данном случае рефлексия хуже вашего варианта?) Я ее тоже не особо люблю, но она гораздо лучше вашего варианта с принудительно открытым конструктором.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199108
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA, SerP1983, вам персональное спасибо, единственные адекватные ответы
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199114
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,
Поправка- единственные ответы , которые Вам понравились)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199116
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, нуу... если вам так нравиться рефлексия флаг вам в руки :) видимо вы с не по настоящему не сталкивались и не поддерживали код-лапшу который довольно активно юзал рефлексию :), после такого к данному инструменту я имею прохладное отношение и использую действительно в КРАЙНИХ случаях, а простейший синглтон это не крайний случай
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199123
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть лучше, если ВСЕ мои классы, которые должны быть Синглтонами будут иметь открытый конструктор? XDDDD Флаг вам в руки) А лучше знамя )))
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199139
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchТо есть лучше, если ВСЕ мои классы, которые должны быть Синглтонами будут иметь открытый конструктор? XDDDD Флаг вам в руки) А лучше знамя )))Это Вы Джону Скиту скажите
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199148
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Куда скинуть?) мне интересно спросить, почему для синглтонов требуется наличие открытого конструктора)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199173
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

А вы прочтите C# in Depth. Implementing the Singleton Pattern in C# и найдите там шаблон синглтона с T:new() :) Я так понимаю это его произведение?))
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199204
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch,ну ну... говорю ж тебе не станешь, ты "ленивым" программистом, всегда себе какую то проблему найдешь, то рефлексия то к шаблону предерешься, наверное тебе нравиться писать много кода :) или ты его не пишешь а копируешь из других источников?:) а потом пилишь напильником? если что не стесняйся тут все свои
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199208
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вы пишите велосипеды на каждый чих? Не стесняйтесь тут полфорума такие)) какие кстати претензии к тому применению рефлексии что на вики, какая с ней может быть проблема?)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199247
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, если у меня есть классы с публичными конструкторами по умолчанию, то как мне добавить в них ещё и НЕ публичные конструкторы по умолчанию?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199253
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Зачем?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199256
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может стоит внимательно прочесть, про то что я предлагал для таких случаев добавить к примеру на вики BindingFlags.Public ?:)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199260
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

ваш код не является реализацией паттерна синглтон
причина - открытый конструктор

я не говорю , что он плохой или хороший

ответ на вопрос :
Имеет ли право существовать такой подход к сиглетону ? - НЕТ
Имеет ли право существовать такой подход]? - ДА
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199261
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, да не никаких проблем :),делайте так как хотите, хоть через рефлексию, хоть без нее :) да вот только при использовании подобного вики подобного варианта синглтона всплывает интересная штука :)
Код: c#
1.
private static readonly S instance = (S)typeof(S).GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[0], new ParameterModifier[0]).Invoke(null);


ну ну.... интересно тот кто будет поддерживать данный код (а это могу быть и не я) сильно будет материться ?
а если подобного кода в проекте будет больше чем 1 место в 1 классе? да разбросан этот будет не по одному модулю и не одному классу :) о как бы я хотел посмотреть как бы Вы поддерживали хотя бы 10000 строк написанных подобной, или схожей абракадаброй , вы слишком мало писали кода если вы не понимаете что подобный код должен быть оправдан вескими причинами :), а если этих причин нет то за такое отрывают руки
P. S. а в открытом паблик конструкторе я не вижу ничего дурного почти у 95% классов открытые паблик - конструкторы той или иной реализации

P. P. S. а если кто - то решил создать обьект типа TClass минуя конструкцию Singleton<TClass> значит ему это нужно и он сам несет за это ответственность, если что пойдет не так то он ССЗБ
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199265
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pation, мдя.. еще один защитник буквы закона :) люди.... ОДУМАЙТЕСЬ :) шаблоны проектирования НЕ есть статическая вещь :) и их можно и НУЖНО изменять :) а если вы считаете что Gof дала вам универсальную серебряную пулю... от всех проблем мне вас жаль :)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199269
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если вы говорите о сферическом в вакууме применении рефлексии, то ваше право, мой вопрос состоит в том, что конкретно плохого в этой строчке? Или она вам кажется непостижимо сложной?
Как относятся 95% классов с открытыми конструкторами к реализации синглтона?
Правильно, в самом C# способов выстрелить себе в ногу недостаточно, надо добавить самописных.. )
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199285
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищи, вот есть у меня класс, что какое-то время используется так: var instance = new MyClass().
И как мне к нему применить паттерн Singleton?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199288
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторовичpation, мдя.. еще один защитник буквы закона :) люди.... ОДУМАЙТЕСЬ :) шаблоны проектирования НЕ есть статическая вещь :) и их можно и НУЖНО изменять :) а если вы считаете что Gof дала вам универсальную серебряную пулю... от всех проблем мне вас жаль :)
шаблоны статическая вещь, логическую концепцию шаблона менять никто не вправе, ибо это будет другой шаблон.
Техническую реализацию и тюнинг - пожалуйста, не нравится шаблон изобретите свой, ( но это будет ваш, а не тот что вам не нравится)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199290
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, для меня да кажется непонятной , [сарказм]Конечно там же так много непонятных буковок латинского алфавита[/сарказм]
а насчет синглтона и его конструктора я могу ответить принципом Оккама, если знаете такой конечно, - "Не умножай сущности без необходимости", в данном конкретном случае синглтона рефлексия ненужна и вредна, потому как затрагивает не нужный в данном случае (и опасный, да да это тот самый способ выстрелить себе в ногу) метод создания экземпляра класса с использованием знания о том как создает обьекты компилятор C#, или вы хотите сказать что вы все внутриности компилятора C# понимаете?:)

P. S. проблема в том что ни Вы ни я не можем четко сказать что же именно делает эта строчка и что за интересные флаги в нее передаються :), точнее сказать то можем а вот понимание почему именно так а не иначе... знаете меня не сильно прельщает перекопать груду документации на MSDN для того чтобы через несколько дней или недель я действительно стал понимать ПОЧЕМУ ЭТО ТАК НАПИСАЛИ... повторяю еще раз я не против рефлексии как таковой но пусть ею занимается компилятор а не человек :)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199294
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Унаследовать его от сабжевой / вики реализации и использовать свойство Instance?
Ну или вот так: Singleton<MyClass>.Instance ?
Или вы хотите, чтобы при вызове конструктора возвращалась ссылка на Singleton<MyClass>.Instance ?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199296
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи, и мир статическая вещь ?:) ну батиенька я вас разочарую, это не так :) а насчет почему я так высоко взял :) - программные системы это отображение систем реального мира, и если вы считаете что это не так... ну я вам сочуствую, а если программные системы это отображение реального мира значит они обладают очень интересным свойством- динамикой изменений, а значит все концепции которые описывают программную систему ТАКЖЕ являються динамически изменяемыми . Если бы такого не было мы бы до сих пор в двоичных кодах писали
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199300
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

Она ищет конструктор экземпляра без параметров с не-публичным модификатором доступа. Я хз насчет нескольких дней, достаточно глянуть на метод GetConstructor и перечисление BindingFlags.

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

кхмм для того что бы понять что такое BindingFlags нужно прочитать http://msdn.microsoft.com/ru-ru/library/system.reflection.bindingflags.aspx] http://msdn.microsoft.com/ru-ru/library/system.reflection.bindingflags.aspx
для того что бы понять type.GetConstructor мне нужно прочитать http://msdn.microsoft.com/ru-ru/library/h93ya84h.aspx] http://msdn.microsoft.com/ru-ru/library/h93ya84h.aspx
знаете это не слабое чтение с неслабым обьемом кода... и это мне нужно что бы понять 1!!! строчку!!! кода!!! ВЫ ЧТО ВЫ ПРЕДЛАГАЕТЕ ПОДДЕРЖИВАТЬ?
за такое отрывают руки именно из-за того что для того чтобы ПОНЯТЬ как работает эта гребаная строчка приходиться лопатить кучу ссылок гугла и MSDN
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199309
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а моя реализация "всего лишь" требует наличия у TClass открытого конструктора, который по умолчанию прописываеться в 95% классов, и это ОЧЕНЬ большое приступление , а ваш код не.. он абсолютно прозрачен для понимания и поддержки ну подумаешь там пару раз в гугл слазить на MSDN пару статеек почитать... делов то.... а вот открытый конструктор это да... это страшно
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199312
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchВасилий Викторович,

Она ищет конструктор экземпляра без параметров с не-публичным модификатором доступа. Я хз насчет нескольких дней, достаточно глянуть на метод GetConstructor и перечисление BindingFlags.

А ваша реализация напрямую запрещает синглтону быть синглтоном.Каким образом запрещает-то?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199323
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, я понял в чём проблема. ТС хочет одного: чтобы везде в коде, где он вызвал Singleton<MyClass>.Instance, он получил бы один и тотже экземпляр типа MyClass. А там, где он в коде написано new MyClass(), он получил бы разные экземпляры.
А ему говорят, что нельзя такого хотеть.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199331
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

Теперь понятно, вы боитесь текста больше чем из 3 строчек.. ) Ну с этим я бороться не в силах)

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

Можно конечно. Ему говорят что разработчик может сознательно захотеть запретить создавать новый экземпляр, а он отвечает что 95% классов с открытым конструктором не могут ошибаться.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199336
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

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

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

да я боюсь , боюсь... жена и ребенок не требуют моего внимания и времени, я должен конечно убить как минимум пару вечеров чтобы понять а КАК ЖЕ работает эта гребаная, ну или аналогичная ей, строчка кода чтобы иметь возможность туда внести изменения при необходимости, дорогой мой помимо КОДА И КОМПЬЮТЕРА СУЩЕСТВУЕТ И ДРУГОЙ МИР!!!
P. S. пишите код настолько ясно и понятно на сколько это возможно, а рефлексия ... этому не способствует
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199350
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Я 10 раз пишу, добавьте к ней | BindingFlags.Public...

А еще лучше, замените рефлексию вот этим:

private static readonly S instance = Activator.CreateInstance(typeof(S), nonPublic: true) as S;
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199353
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА, я понял в чём проблема. ТС хочет одного: чтобы везде в коде, где он вызвал Singleton<MyClass>.Instance, он получил бы один и тотже экземпляр типа MyClass. А там, где он в коде написано new MyClass(), он получил бы разные экземпляры.
А ему говорят, что нельзя такого хотеть.
В принципе такой подход я не рассматривал... но тоже оригинально :)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199354
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий ВикторовичLelouch,

да я боюсь , боюсь... жена и ребенок не требуют моего внимания и времени, я должен конечно убить как минимум пару вечеров чтобы понять а КАК ЖЕ работает эта гребаная, ну или аналогичная ей, строчка кода чтобы иметь возможность туда внести изменения при необходимости, дорогой мой помимо КОДА И КОМПЬЮТЕРА СУЩЕСТВУЕТ И ДРУГОЙ МИР!!!
P. S. пишите код настолько ясно и понятно на сколько это возможно, а рефлексия ... этому не способствует

Зато этому видимо очень способствует добавление способа выстрела себе в ногу путем создания экземпляра класса, который "внезапно" по вашей задумке является синглтоном. Хотите терять время для общения с женой и детьми на поддержку клиентов - ваше право)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199364
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, ну зачем так мрачно то , клиентам не нужно знать КАК именно РЕШАЮТЬСЯ их задачи им нужен готовый РЕЗУЛЬТАТ :), а всю обвертку из десятков и сотен тысяч строк кода им не нужно показывать :), не... кто хочет тот пускай читает исходники я ж не запрещаю... но поверьте моему опыту им это нафиг не сдалось, да и баги есть были и будут всегда, не один человек от этого не застрахован, а по сути вопроса... если я вызову Singleton<TClass>.Instance у него будет поведение такое же как и предпологается у сингелтона :), и все ваши вопли о открытом конструкторе уходят в никуда, а если кто то будет использовать мой код :) ну пусть перед этим читает документацию по коду, и не пугается открытых конструкторов у TClass
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199368
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchВасилий ВикторовичLelouch,

да я боюсь , боюсь... жена и ребенок не требуют моего внимания и времени, я должен конечно убить как минимум пару вечеров чтобы понять а КАК ЖЕ работает эта гребаная, ну или аналогичная ей, строчка кода чтобы иметь возможность туда внести изменения при необходимости, дорогой мой помимо КОДА И КОМПЬЮТЕРА СУЩЕСТВУЕТ И ДРУГОЙ МИР!!!
P. S. пишите код настолько ясно и понятно на сколько это возможно, а рефлексия ... этому не способствует

Зато этому видимо очень способствует добавление способа выстрела себе в ногу путем создания экземпляра класса, который "внезапно" по вашей задумке является синглтоном. Хотите терять время для общения с женой и детьми на поддержку клиентов - ваше право)
и всеже для вас рефлексия - это серебряная пуля от всех проблем... мне вас жаль
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199369
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, вы можете выпускать и библиотеки, я откуда знаю сферу ваших занятий?
Во-вторых, ок, не клиент, а новый сотрудник, который не ожидает такого поведения от Синглтона.
В-третьих, вот вариант без рефлексии:
Код: c#
1.
private static readonly S instance = Activator.CreateInstance(typeof(S), nonPublic: true) as S; 


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

А мне вас, такие проблемы со зрением иметь.. (еще на 1й странице сказал что не люблю рефлексию. Да и читать видимо тяжело, раз 2 страницы МСДН вызывают панику. Заодно и просмотрели способ через Activator в 1 посте на странице)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199376
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий ВикторовичLelouch,

да я боюсь , боюсь... жена и ребенок не требуют моего внимания и времени, я должен конечно убить как минимум пару вечеров чтобы понять а КАК ЖЕ работает эта гребаная, ну или аналогичная ей, строчка кода чтобы иметь возможность туда внести изменения при необходимости, дорогой мой помимо КОДА И КОМПЬЮТЕРА СУЩЕСТВУЕТ И ДРУГОЙ МИР!!!
P. S. пишите код настолько ясно и понятно на сколько это возможно, а рефлексия ... этому не способствует

Правильно написаный код, редко нуждается в исправлении и этим экономит время
Неправильно написаный, является причиной багов, частенько трудно диагностируемых (это я о анти-синглтоне, с открытым конструктором)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199377
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий ВикторовичLelouch, ну зачем так мрачно то , клиентам не нужно знать КАК именно РЕШАЮТЬСЯ их задачи им нужен готовый РЕЗУЛЬТАТ :), а всю обвертку из десятков и сотен тысяч строк кода им не нужно показывать :), не... кто хочет тот пускай читает исходники я ж не запрещаю... но поверьте моему опыту им это нафиг не сдалось, да и баги есть были и будут всегда, не один человек от этого не застрахован, а по сути вопроса... если я вызову Singleton<TClass>.Instance у него будет поведение такое же как и предпологается у сингелтона :), и все ваши вопли о открытом конструкторе уходят в никуда, а если кто то будет использовать мой код :) ну пусть перед этим читает документацию по коду, и не пугается открытых конструкторов у TClass

вы совсем не понимаете? сказано же выстрел себе в ногу , а не клиенту
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199380
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, против Activator.CreateInstance - я не имею ничего, но вот nonPublic:true явно показывает относиться к чему относиться Activator.CreateInstance, и не надо ля - ля про то что он относиться к пространству имен System, да относиться и что с того ?от перемены сум слагаемых сумма не меняется и рефлексией от этого он быть не перестает :) я вам говорил не про пространство имен System.Reflection а про принципиальный подход, а System.Reflection это просто инструменты, как и всеми инструментами им нужно уметь пользоваться!!!
Повторюсь еще раз Рефлексия в данном случае НЕ ПРЕМЕНИМА!! так как тянет за собой пласт не нужных проблем!!
Хотя что вам расказывать вы же апологет.... серебряной пули
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199381
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pation, а ты попробуй изменить подход к шаблонам проектирования :) вдруг понравиться, вдруг поймешь что это не истина в последней инстанции, (черт... чуствую себя змеем искусителем )
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199389
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

Рефлексия неприемлема потому что Василий Викторович ее не осилил) Ок. Я так думаю разговаривать про варианты сделать тоже самое через IoC контейнеры тоже лишнее, ведь они, сволочи, сложно устроены и тут избыточны (c).
P.S. Про строчку, использующую рефлексию Вы говорили, что ее сложно понять и поддерживать. Видимо строчку с активатором тоже сложно понять и поддерживать(мне хватило саммари прочесть - nonPublic = true позволяет использование и закрытого и открытого конструкторов). Так что однозначный вывод - единственный правильный способ, это тот, который вы представили. А то что он вообще не позволяет создать синглтон - это нормально, важнее иметь возможность ничего не читать и не напрягать свою голову, забитую видимо детьми и женой. Я не против такого распределения времени, но смысл вашего поста можно свести к "зацените какой крутой способ, а те, кто говорит что он плох просто мне завидуют".
P.P.S. Съезд на семью и занятость, неспособность посмотреть ссылку на мсдн, "боязнь" перед использованием рефлексии....
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199413
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторовичpation, а ты попробуй изменить подход к шаблонам проектирования :) вдруг понравиться, вдруг поймешь что это не истина в последней инстанции, (черт... чуствую себя змеем искусителем )
откуда ты знаешь какой у меня к ним подход?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199425
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

IMHO, Вам пытаются доказать, что шаблон Singleton не подразумевает наличия public конструктора, т.к. это в корне отличается от задумки именно ЭТОГО ШАБЛОНА, а Вы упорно пытаетесь доказать, что мир развивается, а посему х..рить шаблон можно, но пусть он при этом обзывается Singleton и используется как Singleton...

И не лень было лопатить три страницы переливая из пустого в порожнее?

Опять-же введя public конструктор, Вы порождаете ВОЗМОЖНОСТЬ создания второго экземпляра объекта и тем самым, опять-же, перечёркиваете идею именно этого шаблона...

Ну если так хочется именно такое поведение, то не называйте это Singleton, назовите SemiSingleton... Тогда будет более понятно, что это такой хитровыкрученный класс, который вроде как и синглтон, но в то-же время имеет открытый конструктор (вот где в данном случае для шаблона синглтон, выстрел себе в ногу), который не желательно использовать ( и спрашивается, а занафига тогда он, этот открытый конструктор нужен, если его использовать нельзя ??? ).

В общем, отвечу на поставленный вопрос так: имеет, покуда голова у того кто пользует такой шаблон на месте и абсолютно чётко осознаёт, что кто-нибудь (возможно даже из его команды) не сделает просто:
Код: c#
1.
2.
3.
...
MySemiSingleton<MySuperClass> mySuperObject = new MySemiSingleton<MySuperClass>();
...


вместо:
Код: c#
1.
2.
3.
...
MySemiSingleton<MySuperClass> mySuperObject = MySemiSingleton<MySuperClass>.Instance;
...



Так что если есть желание херить шаблон - вперёд, но только не говорите, что это Singleton и будьте готовы к беготне за жуками в будущем...
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199442
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Kuznetsov, скажите мне, что означает следующая строчка из кода ТС:
Код: c#
1.
protected Singleton() { }

Каким образом получится создать new Singleton<MySuperClass>()?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199455
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Синглтоном должен вообще-то быть MyClass. В примере на вики например, чтобы не смущать, используют наследование.
P.S. Поясните мне смысл такого "синглтона", который вы только что нарисовали?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199461
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, смысл этих примеров с генериками в том, чтобы получить ссылку на единственный объект параметра типа (T, TSource, etc), а не на сам Singleton<TSource>. Из кода это не очевидно?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199480
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
using System;
using System.Reflection;

namespace SingletonApplication
{
    /// Вот мой класс, он не наследник Singleton<T>
    public class MyClass
    {
        private MyClass()
        {
        }

        public static MyClass Create()
        {
            return new MyClass();
        }

        public override string ToString()
        {
            return String.Format("Hello form MyClass with hash code: {0}!", GetHashCode());
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Singleton<MyClass>.Instance);
            Console.WriteLine(MyClass.Create());
            Console.WriteLine(Singleton<MyClass>.Instance);
            Console.WriteLine(MyClass.Create());
            Console.ReadKey();
        }
    }

    /// generic Singleton<T> (потокобезопасный с использованием generic-класса и с отложенной инициализацией)
    /// <typeparam name="T">Singleton class</typeparam>
    public class Singleton<T> where T : class
    {
        /// Защищённый конструктор необходим для того, чтобы предотвратить создание экземпляра класса Singleton. 
        /// Он будет вызван из закрытого конструктора наследственного класса.
        protected Singleton() { }

        /// Фабрика используется для отложенной инициализации экземпляра класса
        private sealed class SingletonCreator<S> where S : class
        {
            //Используется Reflection для создания экземпляра класса без публичного конструктора
            private static readonly S instance = (S)typeof(S).GetConstructor(
                        BindingFlags.Instance | BindingFlags.NonPublic,
                        null,
                        new Type[ 0 ],
                        new ParameterModifier[ 0 ]).Invoke(null);

            public static S CreatorInstance
            {
                get { return instance; }
            }
        }

        public static T Instance
        {
            get { return SingletonCreator<T>.CreatorInstance; }
        }

    }
}

И кто кому что должен? И что, и где очевидно?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199483
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchВообще, смысл этих примеров с генериками в том, чтобы получить ссылку на единственный объект параметра типа (T, TSource, etc), а не на сам Singleton<TSource>. Из кода это не очевидно?Смотрите мой код выше. Вызов Singleton<MyClass>.Instance - это не ссылка на единственный объект параметра типа MyClass? Если конструктор типа MyClass сделать публичным, а реализацию Singleton<T> с вики заменить на реализацию ТС, ссылка будет не на единственный объект?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199504
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

А что в вашем примере MyClass синглтон, да? Статический метод Create вас не смущает?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199524
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchskyANA,

А что в вашем примере MyClass синглтон, да? Статический метод Create вас не смущает?Нет, MyClass не синглтон. Статический метод Create меня не смущает.
Вы мне ответьте на мои вопросы, будьте любезны.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199537
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
/// <typeparam name="T">Singleton class</typeparam>
public class Singleton<T> where T : class
{
  /// Защищённый конструктор необходим для того, чтобы предотвратить создание экземпляра класса Singleton. 
  /// Он будет вызван из закрытого конструктора наследственного класса.
  protected Singleton() { }
 
  /// Фабрика используется для отложенной инициализации экземпляра класса
  private sealed class SingletonCreator<S> where S : class
  {
    //Используется Reflection для создания экземпляра класса без публичного конструктора
    private static readonly S instance = (S) typeof(S).GetConstructor(
                BindingFlags.Instance | BindingFlags.NonPublic,
                null,
                new Type[0],
                new ParameterModifier[0]).Invoke(null);
 
    public static S CreatorInstance
    {
      get { return instance; }
    }
  }
 
  public static T Instance
  {
    get { return SingletonCreator<T>.CreatorInstance; }
  }
 
}
 
/// Использование Singleton
public class TestClass : Singleton<TestClass>
{
    /// Вызовет защищенный конструктор класса Singleton
    private TestClass() { }
 
    public string TestProc()
    {
        return "Hello World";
    }
}


На всякий случай сообщаю, что конец примера находится под комментарием "Использование Singleton"
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199541
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответ на ваш вопрос - ни то ни то не будет синглтоном
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199545
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, и где использование-то, Вы видите? Где вызов TestProc()? Чем отличается вызов TestClass.Instance от Singleton<TestClass>.Instance? Зачем наследовать TestClass от Singleton<TestClass>?
В моём примере я использовал код с вики так Singleton<MyClass>.Instance. Это означает, что я использовал не Singleton?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199548
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchОтвет на ваш вопрос - ни то ни то не будет синглтономА ссылка-то, ссылка будет на единственный объект параметра типа MyClass?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199554
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;

namespace HL7PatientVisitControl.PatientVisit
{
    public class PropertyListInfoMethod
    {
        public PropertyInfo List { get; set; }
        public FieldInfo Functor { get; set; }
        public MethodInfo Method { get; set; }
    }

    public class Segment<TSegmentValue, TSegment>:Element<TSegmentValue, TSegment>
    {

        private sealed class SingletonCreator
        {
            private static readonly List<PropertyListInfoMethod> propertyListInfoMethods =
            typeof(TSegmentValue)
            .GetProperties()
            .Where(x => x.PropertyType.IsGenericType&&
                   x.GetCustomAttributes(typeof(UsedAttribut), true).Any())
            .Join(typeof(TSegmentValue)
                  .GetFields(BindingFlags.NonPublic | BindingFlags.Static)
                  .Where(x => x.GetCustomAttributes(typeof(FunctorAttribut), false).Any()),
                  list => list.Name.ToLowerInvariant(),
                  functor => ((FunctorAttribut)functor
                                             .GetCustomAttributes(typeof(FunctorAttribut), false)
                                             .First()).CollectionName,
                  (list, functor) => new PropertyListInfoMethod
                  {
                      List = list,
                      Functor = functor,
                      Method = typeof(TSegmentValue)
                             .GetMethod("ForeachCollection")
                             .MakeGenericMethod(new Type[]
                             {
                                 ((FunctorAttribut)functor
                                             .GetCustomAttributes(typeof(FunctorAttribut), false)
                                             .First()).Value,
                                 ((FunctorAttribut)functor
                                             .GetCustomAttributes(typeof(FunctorAttribut), false)
                                             .First()).Element                                
                             })
                  })
             .ToList();

            public static List<PropertyListInfoMethod> PropertyListInfoMethods
            { get { return propertyListInfoMethods; } }
        }

        public void ForeachCollection<TValue, TElement>(IEnumerable<TValue> collection, TSegment segment,
                       Func<TSegment, int, TElement> functor)
        {
            int number = 0;
            collection.All(x =>
            {
                TElement element = functor(segment, number++);
                ((ISetFieldValue<TElement>)x).SetFieldValue(element);
                return true;
            });
        }

        public override void SetFieldValue(TSegment field)
        {
            base.SetFieldValue(field);
            if (!IsEmptyList())
                SingletonCreator.PropertyListInfoMethods.All(x => 
                {
                    object list=x.List.GetValue(this, null);
                    object functor=x.Functor.GetValue(this);
                    x.Method.Invoke(this, new object[] { list, field, functor });
                    return true;
                });
        }

        public new bool IsEmptyList()
        {
            return (SingletonCreator.PropertyListInfoMethods.Count == 0);
        }
    }
}



Просто ещераз в n - раз повторюсь Рефлексия не есть серебряная пуля :)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199555
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий ВикторовичХочеться узнать мнение сообщества :) имеет ли право существовать такой подход?:)
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    public class Singleton<TClass> where TClass:new()
    {
        protected Singleton() { }
        private sealed class SingletonClassCreator
        {
            private static readonly TClass instance = new TClass();
            public static TClass Instance { get { return instance; } }
        }

        public static TClass Instance
        {
            get { return SingletonClassCreator.Instance; }
        }
    }


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

Ссылка будет одна и таже, синглтоном оно от этого не станет.

skyANALelouch, и где использование-то, Вы видите? Где вызов TestProc()? Чем отличается вызов TestClass.Instance от Singleton<TestClass>.Instance? Зачем наследовать TestClass от Singleton<TestClass>?
В моём примере я использовал код с вики так Singleton<MyClass>.Instance. Это означает, что я использовал не Singleton?

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

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

Ссылка будет одна и таже, синглтоном оно от этого не станет.

skyANALelouch, и где использование-то, Вы видите? Где вызов TestProc()? Чем отличается вызов TestClass.Instance от Singleton<TestClass>.Instance? Зачем наследовать TestClass от Singleton<TestClass>?
В моём примере я использовал код с вики так Singleton<MyClass>.Instance. Это означает, что я использовал не Singleton?

То есть, даже после внимательного прочтения, вы не поняли, что состояние, которое должен содержать синглтон, находится в TestClass? И именно он должен быть синглтоном.Напишите код, получающий это состояние.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199574
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, мдя...а почему вы считаете что ИМЕННО TClass ну просто ОБЯЗАН реализовывать обвязку сингелтона? почему мой вариант вас смущает? только то что все вокруг с упорством барана твердят о том что у сингелтона ну просто ОБЯЗАН БЫТЬ закрытый конструктор??? мдя...
Знаете перечитайте ка ещераз GoF и Фаулера, может тогда мозги в порядок приведете, в частности в GoF сказано что они предлагают РЕКОМЕНДОВАННЫЙ СПИСОК РЕШЕНИЙ ТИПИЧНЫХ ЗАДАЧ , выделил жирным шрифтом спецально для Вас кстати не забываем и про Утиную Типизацию которая гласит что «Если оно выглядит как утка, плавает как утка и крякает как утка, то это, наверное, и есть утка» , а мой Singelton<TClass>.Instance ну ни каким поведением от синглтона не отличается и КАЖДЫЙ РАЗ когда вы запросите Singelton<TClass>.Instance вы получите ссылку на ОДИН И ТОТ ЖЕ ОБЬ ЕКТ :) спорить будем дальше?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199577
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch,

о смысл этого кода а вы присмотритесь внимательно может и найдете что то удивительное
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199581
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович, по всей видимости для камрада Lelouch TestClass.Instance и Singleton<TestClass>.Instance - это два разных состояния.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199588
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyANA
Нет конечно. А для вас класс с публичным конструктором - Singleton?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199590
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

Вы получаете список свойств "сегмента", тип которых является Generic`ом и они помечены кастомным атрибутом UsedAttribute. (Судя по дальнейшему использованию, это коллекции?).
После чего берете все статические поля, помеченные атрибутом FunctorAttribute (возможно, это ф-ии, берущие элемент сегмента по номеру?), + "создаете" GenericMethod из ForeachCollection, передавая ему в качестве параметров типа Тип элементов коллекции TValue и выходной тип functor'a.
Что делает SetFieldValue не очень видно, кроме того, что она в свою очередь вызывает ForeachCollection для дочерних коллекций сегмента.

Я думаю что где то я ошибаюсь, но всего кода не видно в любом случае.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199591
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
public static class Program
	{
		public static void Main()
		{
			Singleton<Test1>.Instance.A = "Tra ta ta, this is Test1";
			Singleton<Test2>.Instance.B = "Bla Bla Bla, this is Test2";
			Console.WriteLine(Singleton<Test1>.Instance.A);
			Console.WriteLine(Singleton<Test2>.Instance.B);

		}
	}

	public class Singleton<T> where T : class
	{		
		protected Singleton() { }

		private sealed class SingletonCreator<S> where S : class
		{			
			private static readonly S instance = Activator.CreateInstance(typeof(S), nonPublic: true) as S;
			public static S CreatorInstance
			{
				get { return instance; }
			}
		}

		public static T Instance
		{
			get { return SingletonCreator<T>.CreatorInstance; }
		}

	}

	class Test1
	{
		public string A { get; set; }
		private Test1() { }
	}

	class Test2
	{
		public string B { get; set; }
	}
}
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199592
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Test1 или Test2?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199596
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

А вы не умеете читать определение
авторSingleton - Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа. Существенно то, что можно пользоваться именно экземпляром класса, так как при этом во многих случаях становится доступной более широкая функциональность. Например, к описанным компонентам класса можно обращаться через интерфейс, если такая возможность поддерживается языком.

Что, ваш код Гарантирует, что MyClass имеет 1 и только 1 экземпляр:
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199597
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваш код выполняет только 2е - предоставляет глобальную точку доступа, единственность экземпляра MyClass не гарантируется ни разу.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199598
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, напишите код, что создаёт два различных экземпляра типа Singleton<MyClass>.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199601
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

А ответ на вопрос какой? (c)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199602
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, слона вы таки и не приметили
Код: c#
1.
2.
3.
4.
public new bool IsEmptyList()
{
return (SingletonCreator.PropertyListInfoMethods.Count == 0;
}


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

Вот в этом и опасность смешивания шаблонов проектирования с реальными классами, реальная логика шаблона размазываеться по всему классу и так с наскока не скажешь толь фабрика пред тобой то ли сингелтон ...
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199609
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я уже несколько раз пытался донести до вас мысль, что синглтоном в примере на вики является TestClass. В единственности Singleton<TestClass> нет никакого смысла , потому что все, что он предоставляет - доступ к эвземпляру TestClass. Если TestClass управляет каким то состоянием, которое должно быть общим, например, для всех нитей приложения, то монопенисуально, что Singleton<TestClass> - единственный. Каждая нить (при криворуком программисте) может создать себе свой экземпляр TestClass и взять состояние оттуда. То что при этом оно НИКАК не будет относится к общему состоянию нитей - это нормально?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199611
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

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

А ответ на вопрос какой? (c)
Код: c#
1.
Activator.CreateInstance(typeof(TestClass), true)

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

оставьте, вы не достучитесь)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199616
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchЯ уже несколько раз пытался донести до вас мысль, что синглтоном в примере на вики является TestClass. В единственности Singleton<TestClass> нет никакого смысла , потому что все, что он предоставляет - доступ к эвземпляру TestClass. Если TestClass управляет каким то состоянием, которое должно быть общим, например, для всех нитей приложения, то монопенисуально, что Singleton<TestClass> - единственный. Каждая нить (при криворуком программисте) может создать себе свой экземпляр TestClass и взять состояние оттуда. То что при этом оно НИКАК не будет относится к общему состоянию нитей - это нормально?Бла-бла-бла. Смотрим код выше. Вот я криворукий программист не нашёл у класса TestClass публичного конструктора и заюзал Activator. Где Вы что гарантировали?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199618
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAБла-бла-бла. Смотрим код выше. Вот я криворукий программист не нашёл у класса TestClass публичного конструктора и заюзал Activator. Где Вы что гарантировали?
демогогия
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199622
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

От этого шаблон не меняется. И все эти GoF и Фаулеры говорят не то что "называйте синглтоном, даже если оно ведет себя как фабрика", а то что вы должны применять шаблон как вам удобно. Просто не надо называть это реализацией шаблона.
Это что то типа "реализация шаблона, обеспечивающего использование единственного объекта, а так же возможность их создания при необходимости применительно к моей задаче".
Похожее поведение есть и у МС, например HttpContext имеет свойство Current, но так же позволяет создавать новые экземпляры. Кстати он не является Singleton`ом в любом случае, потому что у каждого запроса он свой.
Конкретно ваш пример плох только тем, что если мне действительно потребуется Singleton, у которого нет возможности создать еще 1 экземпляр, то сделать это я не смогу.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199623
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.,

до SkyANA да.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199627
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA, не огорчайтесь на нашего друга Lelouch, он у нас любит Рефлексию и ни одним взглядом не может определить в более или менее сложном коде так горяче обсуждаемый паттерн , а предоставленный код с немалой изящьностью использует и Singleton и Reflection и рекурсию и Linq

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

Ответ "да" вас устроит?
Вы на пред. странице мое сообщение прочитали?

P.S. я вам не друг. я просто переписываюсь с вами на форуме.
P.P.S. я юзаю IoC контейнеры, в них сделать Singleton фабрикой дело 1 настройки
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199629
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё раз читаем вики:ЦельГарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.
Первое достигается засчёт:
Код: c#
1.
2.
3.
  /// Защищённый конструктор необходим для того, чтобы предотвратить создание экземпляра класса Singleton. 
  /// Он будет вызван из закрытого конструктора наследственного класса.
  protected Singleton() { }


Последнее - это свойство:
Код: c#
1.
2.
3.
4.
  public static T Instance
  {
    get { return SingletonCreator<T>.CreatorInstance; }
  }


TestClass не обязан быть наследником от Singleton<TestClass>.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199630
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, мне вас жаль , вы сидите в шаблонном мышлении при котором шаг влево шаг в право это расстрел, рефлексия и щаблоны проектирования захватили ваш мозг на столько что вы неможите взглянуть на проблему иначе, с другой стороны, точки зрения, покрутить проблему так сяк или сверху вниз.... говорю ж умер в вас "ленивый" программист, вы все делает по учебнику :) инструмент владеет вами а не вы инструментом
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199631
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А да, Одиночкой там является только список Property....Info...., сам Segment вообще ни разу не одиночка (судя по приведенному коду, что там у вас в предках я хз)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199632
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchP.P.S. я юзаю IoC контейнеры, в них сделать Singleton фабрикой дело 1 настройкиОпа на. И даже не надо наследовать свои классы от базового Singleton<T>?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199634
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий ВикторовичLelouch, мне вас жаль , вы сидите в шаблонном мышлении при котором шаг влево шаг в право это расстрел, рефлексия и щаблоны проектирования захватили ваш мозг на столько что вы неможите взглянуть на проблему иначе, с другой стороны, точки зрения, покрутить проблему так сяк или сверху вниз.... говорю ж умер в вас "ленивый" программист, вы все делает по учебнику :) инструмент владеет вами а не вы инструментом
Определение синглтона с вашей точки зрения дайте. Тогда будет предмет спора.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199635
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

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

А мне жаль вас, очень. Честно) Но в общем удачи и дальше думать что реализовали Singleton )
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199637
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, Вы то вообще ни фига не реализовали, и думаю не смотрели реализацию Singleton в IoC контейнере, которым пользуетесь.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199638
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

а кто вам сказал что Element<TSegmentValue, TSegment> в моем коде ОБЯЗАН БЫТЬ сингелтоном?? :) мне хватает того что я через
SingletonCreator.PropertyListInfoMethods получаю список свойств объекта 1 раз :) а то что этот SingletonCreator немножичко закрыт ну значит внешним классам нечего знать о его существовании :)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199640
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.,

Я так понимаю это то, на что есть глобальная ссылка, которую нельзя изменить.
то есть:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
static class SuperSinglton
{
     static object _sync = new object();
     static object _instance;
     public static object Instance 
     {
           get
           {
                return _instance;
           }
           set
           {
                 if (_instance == null)
                      lock(_sync)
                           if (_instance == null)
                                  _instance = value;
           }
     }
}


и после инициализации

SuperSinglton.Instance = new MyClass();
MyClass по мановению волшебной палочки становится синглтоном.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199641
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По его мнению, это, я так понимаю*...
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199643
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

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

в Unity это делается с помощью LifetimeManager, еще bla bla bla будет?Хотелось ещё узнать, от чего Вам приходится наследовать свои классы, чтобы сделать Singleton было делом 1 настройки.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199647
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA, ну наш друг Lelouch знает о такой интересной технологии как инверсия контроля , все остальное не являеться достойным внимания гуру :), а то что для того чтобы открыть что то новое нужно делать эксперементы.... так это же невозможно в его вселенной :) интересно а как применим шаблон Singelton не в С#/C++/Java а на том же FAsm :)? ну или LISP или PROLOG :) а как на счет Forth?:), Lelouch знаешь если что то идет вразрез с мнением класиков это не значит что это плохое это означает что класики где-то ошибались, ну или я ошибаюсь но нести ответственность за это тоже мне :), но пойми «Если оно выглядит как утка, плавает как утка и крякает как утка, то это, наверное, и есть утка» а так как мой код ведет себя как сингелтон значит это и есть сингелтон а то что TClass есть открытый конструктор... ну чтож значит так тому и быть :)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199648
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchПо его мнению, это, я так понимаю*...
ну интересно как он это сформулирует. по его пониманию это ссылка на объект присвоенная статическому классу которую нельзя изменить. Тогда спор сводится к тому можно так делать или нет - если очень хочется то можно, но к синглтону это отношения не имеет никакого.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199649
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы шутите?
Синглтон:
Код: xml
1.
2.
3.
<register type="ILogger" mapTo="Logger">
	<lifetime type="singleton"></lifetime>
</register>


Фабрика:

Код: xml
1.
2.
3.
<register type="ILogger" mapTo="Logger">
	<lifetime type="transient"></lifetime>
</register>



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

знаете если мне что то говорит кто то из Харькова или написано классиками, то пожалуй классики чуть чуть повесомее. эдак на бесконечность)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199654
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading;

namespace ConsoleApplication1
{

    public class Singleton<TClass> where TClass : new()
    {
        protected Singleton() { }
        private sealed class SingletonClassCreator
        {
            private static readonly TClass instance = new TClass();
            public static TClass Instance { get { return instance; } }
        }

        public static TClass Instance
        {
            get { return SingletonClassCreator.Instance; }
        }
    }

    public class Test
    {
        public Test() { }
    }

    class Program
    {
        static void Main(string[] args)
        {
            ThreadPool.QueueUserWorkItem((object sender) =>
            {
                Console.WriteLine("Thread Id: {0} Singleton<Test>.Instance.GetHashCode(): {1}", Thread.CurrentThread.ManagedThreadId, Singleton<Test>.Instance.GetHashCode());
            });
            ThreadPool.QueueUserWorkItem((object sender) =>
            {
                Console.WriteLine("Thread Id: {0} Singleton<Test>.Instance.GetHashCode(): {1}", Thread.CurrentThread.ManagedThreadId, Singleton<Test>.Instance.GetHashCode());
            });
            Console.WriteLine("Thread Id: {0} Singleton<Test>.Instance.GetHashCode(): {1}", Thread.CurrentThread.ManagedThreadId, Singleton<Test>.Instance.GetHashCode());
            Console.ReadLine();
        }
    }
}


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

интересно теперь то вы хоть признаете что вы не правы?:) и что самый первый мой пост являеться именно реализацией шаблона Singlton? :) или смелости не хватит?:)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199659
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович, да какой это Singleton? Вот если в консоль вместо Singleton<Test>.Instance.GetHashCode() будет выводится Test.Instance.GetHashCode() , вот это будет Singleton!
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199661
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.
using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Threading;


    public class Singleton<TClass> where TClass : new()
    {
        protected Singleton() { }
        private sealed class SingletonClassCreator
        {
            private static readonly TClass instance = new TClass();
            public static TClass Instance { get { return instance; } }
        }

        public static TClass Instance
        {
            get { return SingletonClassCreator.Instance; }
        }
    }

    public class Test
    {
        public Test() { }
    }

    internal class Program
    {
        private static void Main(string[] args)
        {
            ThreadPool.QueueUserWorkItem((object sender) =>
                {
                    Console.WriteLine("Thread Id: {0} Singleton<Test>.Instance.GetHashCode(): {1}", Thread.CurrentThread.ManagedThreadId, Singleton<Test>.Instance.GetHashCode());
                });
            ThreadPool.QueueUserWorkItem((object sender) =>
                {
                    Console.WriteLine("Thread Id: {0} Singleton<Test>.Instance.GetHashCode(): {1}", Thread.CurrentThread.ManagedThreadId, new Test().GetHashCode());
                });
            Console.WriteLine("Thread Id: {0} Singleton<Test>.Instance.GetHashCode(): {1}", Thread.CurrentThread.ManagedThreadId, new Test().GetHashCode());
            Console.ReadLine();
        }
    }



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

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

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

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

приходит, и не знаешь, плакать над его знаниями или смеяться, вы хотели сказать?)
да тролит он, очевидно уже:)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199671
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.,
судя по примеру он до сих пор свято верит в singleton.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199672
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, и ??? ну создали вы обьект класса Test не используя Singelton<Test>.Instance ну и несите за него ответственость чего я ее нести должен? Вы сами ССЗБ и я тут не причем:) вот если бы Singelton<Test>.Instance.GetHashCode() в разных потоках был разным.. тогда да... это был бы не сингелтон
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199673
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchskyANA,

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

Понятно, для truе кодеров из Харькова, не осиливших даже вики, синглтоном является только то, что называется Singleton)
Спокойной ночи)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199676
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.,
они пусть хотя бы это продемонстрируют (((
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199677
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин специально постараюсь найти электронную почту кого нибудь из GoF и озадачить этим вопросом :) если получиться отпишусь в теме аж самому стало интересно что они ответят :)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199678
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchDenis.,
они пусть хотя бы это продемонстрируют (((
смайлы не в ту сторону. Весело же
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199679
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Специально для skyANA, в примере на вики вы можете создать экземпляр TestClass без активатора, рефлексии и т.д.? Хотя я думаю все равно не поймете...
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199680
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.LelouchskyANA,

Синглтоном это будет если я не смогу создать Test )))
это будет наидермовейшим синглтоном так как я могу туда засунуть даже класс с открытым конструктром, даже пусть у тест он закрытыйПолучается что у Lelouch пользуется наидерьмовейшим синглтоном, т.к. то что он пишет в конфиге не запрещает никому написать new Logger() .
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199681
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме как обращением к TestClass.Instance или Singleton<TestClass>.Instance *
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199682
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

это запрещает тот факт, что реализация имеет модификатор доступа internal, и без рефлексии ее не достать.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199683
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
грустно все это, от костности мышления некоторых личностей, никто так и не понял что следуя той же правилу утиной типизации это есть также сингелтон, а то что можно создать несколько экземпляров TClass... это необходимость с которой можно помериться, ведь самое главное что Singelton<TClass>.Instance ведет себя как положено сингелтону и в этом вся суть....
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199689
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторовичгрустно все это, от костности мышления некоторых личностей, никто так и не понял что следуя той же правилу утиной типизации это есть также сингелтон, а то что можно создать несколько экземпляров TClass... это необходимость с которой можно помериться, ведь самое главное что Singelton<TClass>.Instance ведет себя как положено сингелтону и в этом вся суть....
а ка положено вести себя синглтону? В чем суть его? Коротко, если можно.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199690
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchskyANA,

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

что "ну ну"? реализация лежит в отдельной сборке, Friend сборки у нее не прописаны? Как еще можно оттуда достать тип? Дизассемблировать сборку? это уже не тривиальные способы стрельбы по конечностям.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199700
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, в любом классе, отличном от Logger, находящемя в том же пространстве имён, можно написать new Logger() .
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199702
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Василий Викторовичгрустно все это, от костности мышления некоторых личностей, никто так и не понял что следуя той же правилу утиной типизации это есть также сингелтон, а то что можно создать несколько экземпляров TClass... это необходимость с которой можно помериться, ведь самое главное что Singelton<TClass>.Instance ведет себя как положено сингелтону и в этом вся суть....
а ка положено вести себя синглтону? В чем суть его? Коротко, если можно.
:) а он и ведет как положено сингелтону, предоставляет доступ к единственному экземпляру класса TClass, который ему доступен :) а то что вы можете создать экземпляр TClass это ваша ответственность а не моя :) я вам интерфейс глобальной точки предоставил вот и пользуйтесь а все остальное меня не касаеться, если вы хотите еще один экземпляр класса TClass пожалуйста почему я должен вас ограничивать? это ваш экземпляр и ваша ответственность, я не царь и не бог что бы вам что то указывать, а то что это по вашему мнению не допустимо ну значит вы ССЗБ
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199703
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

руководство по программированию на C# с вами не согласно:
MSDNinternal
Доступ к типу или члену возможен из любого кода в той же сборке, но не из другой сборки.

http://msdn.microsoft.com/ru-ru/library/ms173121.aspx
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199707
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий ВикторовичDenis.пропущено...

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

руководство по программированию на C# с вами не согласно:
MSDNinternal
Доступ к типу или члену возможен из любого кода в той же сборке, но не из другой сборки.

http://msdn.microsoft.com/ru-ru/library/ms173121.aspx Да, ошибся. В любом классе, отличном от Logger, находящемя в той же сборке, можно написать new Logger() .
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199711
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

имея ввиду что сборка с Logger поставляется в составе продукта (она подписана ключом издателя заодно), и, месяцев 5 назад, пока я там работал, я следил за ее состоянием, поверите ли вы мне, что на тот момент там таких вызовов не было?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #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
Имеет ли право существовать такой подход к сиглетону?
    #38199751
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий ВикторовичDenis.,

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

и что от этого изменится, кроме того, что с новой версией сборки ваш код перестанет компилироваться?
вы вольны остаться на старой версии, или заменить вызовы new MyClass() на MyClass.Instance.
BTW у МС например, как я писал выше, есть классы с таким поведением (есть Current, но можно создать новый экземпляр). Просто Singleton они не являются.

Кстати, если произойдет такая замена, возможна ситуация, что MyClass перестал допускать возможность массового создания - то есть ваш код полностью валиден для старой версии сборки.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199753
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, а Вы так и не объяснили почему Singleton<MyClass> - это не синглтон.
У него может быть только один экземпляр и к нему есть глобальная точка доступа - свойство Instance.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199754
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Василий Викторовичпропущено...

да я считаю так считаю ибо я предоставил глобальную точку доступа с единственным доступным для этой точки доступа экземпляром класса TClass к тому же потокобезопасным , на этом моя зона ответственности заканчиваеться и я не отвечаю за то что взбредет в голову какому нибудь Петру Сергеевичу, который создаст из моего класса TClass еще 1 экземпляр, он сам ССЗБ, пусть перед использованием читает документацию к тому что использует
не могу написать код так как с телефона. Если я сделаю статический класс в котором сделаю поле некого типа инициализирую его в статическом конструкторе и предоставлю к нему только геттер это синглтон? Удовлетворяет твоему определению полностью. Синглтон?
немогу утверждать что это будет сингелтон в привычном понимании... но то что тесты выдают один и тот же GetHashCode() это факт
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199755
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchВасилий Викторович,

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

и что от этого изменится, кроме того, что с новой версией сборки ваш код перестанет компилироваться?
вы вольны остаться на старой версии, или заменить вызовы new MyClass() на MyClass.Instance .И пользователи web-приложения начнут ловить интереснейшие глюки
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199757
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

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

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

"немогу утверждать что это будет сингелтон в привычном понимании... но то что тесты выдают один и тот же GetHashCode() это факт "
что здесь несинглтоновского в привычном понимании? Ты сказал что такое синглтон. Код который я описал удовлетворяет твоему определению. Что здесь непривычного ?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199761
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
или, например, у new MyClass() будет своя копия "ресурса" (например, список результатов вычисления), у Singleton<MyClass> своя.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199762
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis., :) хорошо я скажу что это сингелтон с ограничеными возможностями :) (вроде использования только статических функций) тебя это устроит?:)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199764
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchskyANA,
или, например, у new MyClass() будет своя копия "ресурса" (например, список результатов вычисления), у Singleton<MyClass> своя.
это тоже самое что у вас своя ветка проекта а у Вси пупкина форк :) смысл от этого не поменяеться, хотите поведение сингелтона, используйте глобальнуй точку доступа, если не используете это ваши проблемы
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199765
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchskyANA,

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

в моей сборке у человека или не будет возможности создать свой экземпляр MyClass, или не будет такой фигни как Singleton<MyClass>.
Максимум будет, например, нитезависимый MyClass.Current . Но я даже в пьяном бреду не назову его Singleton`ом
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199768
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchskyANA,
или, например, у new MyClass() будет своя копия "ресурса" (например, список результатов вычисления), у Singleton<MyClass> своя.Дак в вот в web у реквеста и должна быть своя копия "ресурса". Если один реквест получит доступ к ресурсам другого реквеста, то будет весело.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199769
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2) Ну вы будете вынуждены или остаться на старой версии, или перейти на другое решение. Или воспользоваться
skyANAМаксимум будет, например, нитезависимый MyClass.Current . Но я даже в пьяном бреду не назову его Singleton`ом на клиенте. (если MyClass перестанет быть Singleton'ом).
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199770
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

То есть, вы считаете что HttpRequest.Current -синглтон?)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199771
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HttpContext.Current *
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199772
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий ВикторовичDenis., :) хорошо я скажу что это сингелтон с ограничеными возможностями :) (вроде использования только статических функций) тебя это устроит?:)
таким образом у некого класса (или экземпляра что не принципиально ) есть поле недоступное для изменения и как ты только что подтвердил это синглтон. Таким образом static class myclass{public int singleton{get{return 10;}} это синглтон так как
"я предоставил глобальную точку доступа с единственным доступным для этой точки доступа экземпляром класса TClass к тому же потокобезопасным ". Как известно глобальность относительна таким образом любой класс или объект предоставляющий поле для чтения синглтон. Поздравляю, вы от лично поняли суть паттерна и не зашорены как остальные ;)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199773
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, т. е. вы за другого человека считает что ему хорошо а что плохо?:), вы просто не умеете признавать свои поражения, тесты вам были предоставлены, экземпляр TClass полученые через Singelton<TClass>.Instance в разных потоках идентичны, а значит Singelton<TClass>.Instance ведет себя как синглтон а это самое важное в данном споре, а то кто то может создать новый экземпляр TClass относиться к моему коду и комне точно так же как форк вашей библиотеки Петром Сергеевичем к вам :) мало ли чего захочет сторонний разработчик?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199776
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis., нет просто мы смотрим на один и тот же объект под разными углами :) вы сторонник строгого поведения :) я сторонник утиной типизации, т. к. она позволяет рассмотреть систему более глобально чем если считать все строгим и статичным
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199777
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

я ничего не решаю, ваша реализация синглтона эквивалентна статическому полю без возможности перезаписи.

Кстати, как вы сами сказали, getter свойства всего-лишь метод, так что вот такой код тоже синглтон:
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199778
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199780
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.,

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

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

То есть, вы считаете что HttpRequest.Current -синглтон?)В рамках одного реквеста можно сказать и так. Погуглите "Singleton-per-Request pattern".
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199785
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

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

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

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

я правильно понял на что вы намекали?)
я не намекал. Я это писал открытым текстом раза 4. Надеялся что мне скажут что это не синглтон и продолжаться поиски а что же тогда синглтон. Но мне сказали Что это сингл он.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199793
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, Вы уже погуглили "Singleton-per-Request pattern"?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199794
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Код: c#
1.
public static HttpContext Current { get; set; }


Вот этого из MSDN достаточно???
http://msdn.microsoft.com/ru-ru/library/system.web.httpcontext.current.aspx
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199796
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANALelouch, Вы уже погуглили "Singleton-per-Request pattern"?

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

Код: c#
1.
public static HttpContext Current { get; set; }


Вот этого из MSDN достаточно???
http://msdn.microsoft.com/ru-ru/library/system.web.httpcontext.current.aspx Нет, не достаточно. Вы же не знаете зачем тут нужен сеттер.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199798
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchskyANALelouch, Вы уже погуглили "Singleton-per-Request pattern"?

И что этим паттерном вы хотели мне сказать?) Что, если я не воспользуюсь setterом HttpContext.Current, то я могу хранить свои объекты в HttpContext.Current.Items? (судя по первой же реализации в гугле)Что Вам пора нести лучи добра в массы: писать людям, что это у них не реализация "Singleton-per-Request pattern", т.к. у свойства HttpContext.Current есть сеттер.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199799
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

http://jelle.druyts.net/2006/04/05/FakingACurrentHttpContext.aspx
ну судя по этому подменить его можно. Мне сейчас лень реанимировать свой проект, поэтому проверить к сожалению, не могу
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199801
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Я не сказал что у них не реализация этого паттерна
Вот только синглтоном, судя по всему, там является ни разу не HttpContext.Current, а тот объект, который добавляется в Items.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public class SingletonPerRequest
{
    public static SingletonPerRequest Current
    {
        get
        {
            return (HttpContext.Current.Items["SingletonPerRequest"] ??
                (HttpContext.Current.Items["SingletonPerRequest"] = 
                new SingletonPerRequest())) as SingletonPerRequest;

        }
    }
}


1я ссылка в гугле: http://dotnetslackers.com/Community/blogs/simoneb/archive/2006/08/21/The-ASP.NET-Singleton_2D00_per_2D00_Request-pattern.aspx
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199804
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchskyANA,

Я не сказал что у них не реализация этого паттерна
Вот только синглтоном, судя по всему, там является ни разу не HttpContext.Current, а тот объект, который добавляется в Items.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public class SingletonPerRequest
{
    public static SingletonPerRequest Current
    {
        get
        {
            return (HttpContext.Current.Items["SingletonPerRequest"] ??
                (HttpContext.Current.Items["SingletonPerRequest"] = 
                new SingletonPerRequest())) as SingletonPerRequest;

        }
    }
}


1я ссылка в гугле: http://dotnetslackers.com/Community/blogs/simoneb/archive/2006/08/21/The-ASP.NET-Singleton_2D00_per_2D00_Request-pattern.aspx В Items добавляется объект new SingletonPerRequest(). Сам по себе этот объект разве синглтон?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199805
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public class SingletonPerRequest
{
    public static SingletonPerRequest Current
    {
        get
        {
            return (HttpContext.Current.Items["SingletonPerRequest"] ??
                (HttpContext.Current.Items["SingletonPerRequest"] = 
                new SingletonPerRequest())) as SingletonPerRequest;

        }
    }

    private SingletonPerRequest() { }
}



Это уже не реализация singleton-per-request?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199807
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, реализация. Но от этого Ваше выражение: "синглтоном, судя по всему, там является тот объект, который добавляется в Items", - не становится корректным.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199808
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

если я добавлю еще один объект с таким-же поведением, то он не будет Singleton-per-Request?

P.S. Таки реанимировал и убедился, подменить можно...
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199809
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте завтра продолжим, у меня хоть и свободный график (надеюсь как и у Вас), но уже 4 часа утра?)) Спокойной ночи)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199810
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchskyANA,

если я добавлю еще один объект с таким-же поведением, то он не будет Singleton-per-Request?Тут нужно уточнить, что Вы под объектом понимаете. Лично я - экземпляр класса.

LelouchP.S. Таки реанимировал и убедился, подменить можно...Уже пишете людям, что их реализация "Singleton-per-Request" - лажа?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199811
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchДавайте завтра продолжим, у меня хоть и свободный график (надеюсь как и у Вас), но уже 4 часа утра?)) Спокойной ночи)Приятных снов. :)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199813
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

нет конечно, я уже выше написал свое мнение по этому вопросу
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199898
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавил навсякий...

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    public static class Singleton
    {
        static readonly Dictionary<Type, object> TypeToInstance = new Dictionary<Type, object>();

        public static T GetInstance<T>(Func<T> getNew) where T : class
        {
            lock (TypeToInstance)
                return (T)TypeToInstance.GetOrAddValue(typeof(T), getNew);
        }

        public static T GetInstance<T>() where T : class, new()
        {
            return GetInstance(() => new T());
        }
    }
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199932
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не знаю зачем нужен синглтон (не было ж его в коболе и пл/1 , а код писали)
но Лелоуч больше всех понимает суть
а ВВ воще студент и токо что начал читать вики
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38199944
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosне знаю зачем нужен синглтон (не было ж его в коболе и пл/1 , а код писали)
но Лелоуч больше всех понимает суть
а ВВ воще студент и токо что начал читать вики+100500. Сказал, как отрезал... А то тут уже 10 страниц мусолят одно да потому, пытаясь сказать, что если выглядит как синглтон - то оно то и есть...
Блин, поп-корн заканчивается, надо сходить ещё купить...

Я лично, не понимаю, зачем называть синглтоном то что на него похоже, но является им лишь отчасти.
Это как на индоутку сказать, что она утка, но вот у неё есть ещё одна фича и она типа и как индейка... Так что-же она тогда утка или индейка???, А она ни то ни другое - она ИНДОУТКА !!!
Так что ВВ, то что ты сваял - это и есть индоутка (SemiSingleton)...
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38200045
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Kuznetsov, молчали-бы. Вы то откровенно лажанулись, написав следующее:Alex KuznetsovВ общем, отвечу на поставленный вопрос так: имеет, покуда голова у того кто пользует такой шаблон на месте и абсолютно чётко осознаёт, что кто-нибудь (возможно даже из его команды) не сделает просто:
Код: c#
1.
2.
3.
...
MySemiSingleton<MySuperClass> mySuperObject = new MySemiSingleton<MySuperClass>();
...
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38200062
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosне знаю зачем нужен синглтон (не было ж его в коболе и пл/1 , а код писали)
но Лелоуч больше всех понимает суть
а ВВ воще студент и токо что начал читать викиВы раскроете суть своей фразы про суть, или может перейдём к вопросу: зачем нужен ООП?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38200065
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

суть проста - неубиваемый объект
ооп - нах не нужен
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38200070
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos, и да, давайте не будет переходить на личности. Критикуйте подход, а не людей.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38200083
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosсуть проста - неубиваемый объектОбъясните смысл этой фразы? Вы предлагаете нам подумать на тему: "Singleton и сборка мусора"?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38200084
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

синглтон - недорозумение
это когда класс=объект
все это издержки ооп, не введено понятие мощности конструктора
а если надо три объекта токо?
так как конструктор - фабрика, надо было ввести понятие мощности фабрики по части выпуска продукции
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38200085
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAViPRosсуть проста - неубиваемый объектОбъясните смысл этой фразы? Вы предлагаете нам подумать на тему: "Singleton и сборка мусора"?
да думайте о чем хотите
но сначала подумайте - откуда эти грабли, которые обходите паттернами фулера
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38200094
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно, Вы сюда побрюзжать зашли.

P.S.: паттерн Singleton легко адаптировать для создания нужного числа экземпляров. И кто такой Фулер?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38200334
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAlex Kuznetsov, молчали-бы. Вы то откровенно лажанулись, написав следующее:Alex KuznetsovВ общем, отвечу на поставленный вопрос так: имеет, покуда голова у того кто пользует такой шаблон на месте и абсолютно чётко осознаёт, что кто-нибудь (возможно даже из его команды) не сделает просто:
Код: c#
1.
2.
3.
...
MySemiSingleton<MySuperClass> mySuperObject = new MySemiSingleton<MySuperClass>();
...

ОК, звыняйте батько, опечаталси !
Исправляюсь...

Вот так Вас устроит?
Код: c#
1.
2.
3.
...
MySuperClass mySuperObject = new MySuperClass();
...



Я вообще нафиг не понимаю (ну вот не доходит до меня глубинного смысла) использования Generic-ов для реализации шаблона Singleton...
В любом случае каждый такой класс проектируется исходя из
Код: plaintext
конкретных
и
Код: plaintext
специфичных
задач.
Поэтому использовать Generic только вместо того, чтобы нарисовать три лишних строчки кода....
Ну не понимаю я этого - видимо ленность во мне ещё недостаточно развита

И не надо только воплей про то что трудно поддерживать проект, если у тебя более N singleton-ов. Фигня всё это...
IMHO - если много в проекте singleton-ов - переделывай архитектуру ибо кривая она возможно...
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38200370
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Kuznetsov, да нету никакого глубиннного смысла. Просто где-то надо new MySuperClass() , а где-то Singleton<MySuperClass>.Instance .
Вот такая практическая необходимость.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38200373
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот камрад Lelouch использует Unity:
LelouchСинглтон:
Код: xml
1.
2.
3.
<register type="ILogger" mapTo="Logger">
	<lifetime type="singleton"></lifetime>
</register>


Фабрика:
Код: xml
1.
2.
3.
<register type="ILogger" mapTo="Logger">
	<lifetime type="transient"></lifetime>
</register>

И никого не смущает, что сам по себе класс Logger не реализует паттерн Singleton.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38200411
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Спасибо что обратили внимание, судя по тому что данный баг был исправлен:
https://unity.codeplex.com/workitem/9460, то в классе Logger можно использовать закрытый конструктор. Сегодня же напишу, что так можно сделать, надеюсь его поправят. Слушаю еще ваши замечания.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38200425
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, бага-то тут при чём?
Если ТС добавит фабрику для создания объектов, вместо использования публичного конструктора, то его подход станет кошернее?
Если класс Logger заимеет публичный конструктор, то реализация Unity автоматически станет не синглтоном?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38200429
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

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

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

skyANAПолучается что у Lelouch пользуется наидерьмовейшим синглтоном, т.к. то что он пишет в конфиге не запрещает никому написать new Logger().

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

skyANAПолучается что у Lelouch пользуется наидерьмовейшим синглтоном, т.к. то что он пишет в конфиге не запрещает никому написать new Logger().

Теперь станет нельзя, соответственно, по вашим же словам, перестанет быть наидерьмовейщим синглтоном. Управлять жизненным циклом будет только IoC контейнер.Не понял. Вы утверждаете, что нельзя будет написать
Код: xml
1.
2.
3.
<register type="IMyInterface" mapTo="MyClass">
	<lifetime type="singleton"></lifetime>
</register>

если MyClass имеет публичный конструктор? Из ссылки на багу, что Вы привели этого вроде не следует.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38200649
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAlex Kuznetsov, да нету никакого глубиннного смысла. Просто где-то надо new MySuperClass() , а где-то Singleton<MySuperClass>.Instance .
Вот такая практическая необходимость.

ААА, понятно, только ради щоб було....
Кхм....
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38200704
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex KuznetsovskyANAAlex Kuznetsov, да нету никакого глубиннного смысла. Просто где-то надо new MySuperClass() , а где-то Singleton<MySuperClass>.Instance .
Вот такая практическая необходимость.

ААА, понятно, только ради щоб було....
Кхм....Кхм... Чё?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38201414
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA, мда... так никто и не сказал, почему паблик конструктор для TClass это плохо, ну кроме того что какой то "мифический" Петр Сергеевич удумает создать еще экземпляры класса TClass :) (и флаг ему в руки если ему так хочеться :), я за это не отвечаю, я вообще не могу отвечать за чужих программистов и их код :))и чем это плох мой контейнер Singelton<TClass> а вот IoC контейнер это хорошо :), он плох тем что я не использую Unity?:)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38201546
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex KuznetsovIMHO - если много в проекте singleton-ов - переделывай архитектуру ибо кривая она возможно...Возможно, или кривая? Если кривая - то в каких случаях? Как количество синглетонов влияет на прямоту архитектуры?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38201559
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,
Да никто не говорит, что это плохо.
Говорят, что это нарушает принцип шаблона Singleton, т.к. даёт возможность создать ещё один экземпляр класса - а это его прямое противоречие.
Опять-же назовите это полусинглтоном и никто Вам слова не скажет(пример про индоутку)...
А Вы зацепились за непонятно что и пытаетесь доказать что это круто...
Да пожалуйста, может быть и круто, для Вас лично...

Вы же хотели поиметь различные мнения? Вы их поимели.
И нечего теперь говорит, что вокруг много тех, кто не смог по достоинству оценить Ваш титанический труд по созданию нового шаблона...
Опять-же Вы сами с себя за использование Вашего шаблона ответственность снимаете, ибо :
Василий Викторович...ну кроме того что какой то "мифический" Петр Сергеевич удумает создать еще экземпляры класса TClass :) (и флаг ему в руки если ему так хочеться :), я за это не отвечаю, я вообще не могу отвечать за чужих программистов и их код ... Получается, что если Вы поставили библиотеку и в ней имеется такой вот "синглтон" который в один "прекрасный момент" чудесным образом может вдруг стать вовсе даже и не синглтоном потому что есть такая возможность, и кто-то (а именно тот кто Вам денег заплатил за библиотеку) вдруг по случайности (ну возможность-то есть) взял да и создал второй экземпляр класса - то он сам дурак? И Вы за это не хотите отвечать? Ну тогда чтобы не отвечать за это - называйте вещи своими именами...

Вот о чём Вам пытаются уже десять страниц сказать...
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38201752
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAlex Kuznetsovпропущено...
ААА, понятно, только ради щоб було....
Кхм....Кхм... Чё?Кхм... - это мнение моё.... о практичности такого подхода к синглтонам...
Корячиться с Generic-ами для того чтобы работать с шаблоном Singleton - по мне, так я для этого ленивый...
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38201768
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КAlex KuznetsovIMHO - если много в проекте singleton-ов - переделывай архитектуру ибо кривая она возможно...Возможно, или кривая? Если кривая - то в каких случаях? Как количество синглетонов влияет на прямоту архитектуры?Возможно кривая
За количество сильно не скажу, т.к. не было у меня проектов, где-бы мне приходилось использовать больше 5 Singleton-ов.

А у Вас такие проекты были? Просто хочется понять практичность...
PS. Прошу без срача и личных оскорблений, просто и по делу...
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38201858
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex KuznetsovПросто хочется понять практичность...Для этого нужно сравнить с аналогами:

1. static class с некоторыми оговорками.
2. DI-контейнер.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38201863
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex KuznetsovВозможно криваяАрхитектура не может быть "возможно кривая". Она или кривая, или нет.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202043
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex KuznetsovskyANAпропущено...
Кхм... Чё?Кхм... - это мнение моё.... о практичности такого подхода к синглтонам...
Корячиться с Generic-ами для того чтобы работать с шаблоном Singleton - по мне, так я для этого ленивый...Реализация на вики тоже с Generic-ами. А есть реализация через Lazy. Выбирайте, что Вам подходит. ТС вот Выбрал и не заметно, что особо корячится с этим.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202083
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAРеализация на вики тоже с Generic-ами. А есть реализация через Lazy. Выбирайте, что Вам подходит. ТС вот Выбрал и не заметно, что особо корячится с этим. Да я и не собираюсь шубу на плечи через ноги одевать.
Я как-то так привык:
по старинке
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
    public class MySingletonClass
    {
        private static MySingletonClass fSingleton = null; 

        private MySingletonClass()
        {
           ...
        }

        public static MySingletonClass SingletonInstance
        {
            get
            {
                if (fSingleton == null) fSingleton = new MySingletonClass();
                return fSingleton;
            }
        }
     ...
    }


Опять-же я не отрицаю возможности использования Generics для реализации шаблона Singleton....
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202099
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Kuznetsov, а какую реализацию Вы посоветуете, если где-то нужен синглтон инстанс класса, а где-то обычный?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202168
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAlex Kuznetsov, а какую реализацию Вы посоветуете, если где-то нужен синглтон инстанс класса, а где-то обычный?
предложение противоречит само себе
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202174
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAlex Kuznetsov, а какую реализацию Вы посоветуете, если где-то нужен синглтон инстанс класса, а где-то обычный?skyANA, наводящий вопрос: что значит где-то? Это одно приложение или универсальная библиотека, которая может применяться для разных случаев? И в зависимости от применения библиотеки мы можем использовать либо синглтон, либо работать с ним как с обычным классом?

Если это библиотека, то в документации к ней должно быть жирным по белому указано, что есть такая фича и Вы используете её на свой страх и риск и несёте за это ответственность.
Но согласитесь, что это будет уже не чистый синглтон.

А в одном единственном приложении порождать синглтон и такой-же не синглтон.... Ну тогда сильно необходимо ужесточить контроль над использованием разделяемых ресурсов... И опять-же это тоже не будет чистым синглтоном...
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202181
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Kuznetsov, вижу, что Вы плохо следили за дискуссией.
В desktop-клиенте нужен синглтон инстанс класса, в web-клиенте нет. Что предложите?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202186
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Unity же предоставляет такую возможность. Как бы Вы реализовали?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202231
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAlex Kuznetsov, вижу, что Вы плохо следили за дискуссией. Здесь Вы не правы... По моему мой предыдущий ответ как раз таки и раскрывает ответ на Ваш следующий вопрос (он и был написан исходя из Ваших же ранних предложений)...
skyANAВ desktop-клиенте нужен синглтон инстанс класса, в web-клиенте нет. Что предложите?

Повторю ещё раз: подход описанный ТС имеет право на существование ( я этого нигде не отрицал ), просто надо называть вещи своими именами... Это уже не будет ЧИСТЫМ Singleton. Или Вы не согласны с таким утверждением?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202245
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex KuznetsovskyANAAlex Kuznetsov, вижу, что Вы плохо следили за дискуссией. Здесь Вы не правы... По моему мой предыдущий ответ как раз таки и раскрывает ответ на Ваш следующий вопрос (он и был написан исходя из Ваших же ранних предложений)...
skyANAВ desktop-клиенте нужен синглтон инстанс класса, в web-клиенте нет. Что предложите?

Повторю ещё раз: подход описанный ТС имеет право на существование ( я этого нигде не отрицал ), просто надо называть вещи своими именами... Это уже не будет ЧИСТЫМ Singleton. Или Вы не согласны с таким утверждением?Ну в реализации Unity также употребляется термин singleton, и насколько ЧИСТА та реализация никого почему-то не волнует.

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

следовательно ответ: да, но это не синглтон, а удобная ТСу реализация чего-то там)
Приведите пример, что на клиенте должно вести себя как синглтон, а на сервере позволять множественное создание? Что мешает вам с помощью наследования сделать из обычного класса синглтон, закрыв конструктор, добавив реализацию статического свойства Instance?
P.S. Немного подумав: Использование Unity не делает класс синглтоном (пока он имеет открытый конструктор), обеспечивая лишь такое-же поведение как недореализация ТСа.
P.P.S. В n-й раз: Реализация ТСа плоха, в том числе, тем, что Требует от MyClass наличия открытого конструктора. То есть, если я, как разработчик MyClass, уверен что он должен быть синглтоном, то я не могу этого обеспечить, и оставляю на откуп дяде Васе, что он никогда не создаст его экземпляр.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202306
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
using System;

namespace PseudoSingleton
{
    public abstract class MyBasePseudoSingleton // Он находится типа в библиотеке
    {
        private int fInternalValue = 0;

        public string SampleMethod()
        {
            return String.Format("Sample String {0}",fInternalValue);
        }

        public void setInternalValue(int aValue)
        {
            fInternalValue = aValue;
        }
    }

    public class SingletonClass : MyBasePseudoSingleton // реализуется в Desktop
    {
        private static SingletonClass fInstance = null;

        private SingletonClass():base()
        {
        }

        public static SingletonClass Instance
        {
            get { if (fInstance == null) fInstance = new SingletonClass(); return fInstance; }
        }
    }

    public class NonSingletonClass : MyBasePseudoSingleton // Реализуется в WEB
    {
    }

    class Program
    {
        static void Main(string[] args)
        {
            SingletonClass sc = SingletonClass.Instance;
            NonSingletonClass nsc = new NonSingletonClass();

            sc.setInternalValue(10);

            nsc.setInternalValue(20);
            Console.WriteLine(String.Format("{0} - {1}", sc.GetType(), sc.SampleMethod()));
            Console.WriteLine(String.Format("{0} - {1}", nsc.GetType(), nsc.SampleMethod()));

            Console.WriteLine("--------------------------------------------------");

            nsc.setInternalValue(30);
            Console.WriteLine(String.Format("{0} - {1}", sc.GetType(), sc.SampleMethod()));
            Console.WriteLine(String.Format("{0} - {1}", nsc.GetType(), nsc.SampleMethod()));

            /*********************************************************************
            * Вот этот кусок не откомпилируется - 
            * PseudoSingleton.SingletonClass.SingletonClass() недоступен из-за его уровня защиты
            **********************************************************************/
            SingletonClass sc2 = new SingletonClass();
            sc2.setInternalValue(30);
            Console.WriteLine(String.Format("{0} - {1}", sc2.GetType(), sc2.SampleMethod()));
            /*********************************************************************/

            Console.ReadLine();
        }
    }
}


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

следовательно ответ: да, но это не синглтон, а удобная ТСу реализация чего-то там)
Приведите пример, что на клиенте должно вести себя как синглтон, а на сервере позволять множественное создание? Что мешает вам с помощью наследования сделать из обычного класса синглтон, закрыв конструктор, добавив реализацию статического свойства Instance?
P.S. Немного подумав: Использование Unity не делает класс синглтоном (пока он имеет открытый конструктор), обеспечивая лишь такое-же поведение как недореализация ТСа.
P.P.S. В n-й раз: Реализация ТСа плоха, в том числе, тем, что Требует от MyClass наличия открытого конструктора. То есть, если я, как разработчик MyClass, уверен что он должен быть синглтоном, то я не могу этого обеспечить, и оставляю на откуп дяде Васе, что он никогда не создаст его экземпляр.У ТС MyClass реализует некую бизнес-логику. А уж как эта логика используется, как Singleton, или как Singlecall, от класса не зависит.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202503
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Если эта логика должна быть реализована как синглтон и никак иначе, то что мне делать с реализацией ТСа? Она мне этого не обеспечит
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202522
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, ну Вы же используете Unity, одной строкой Вы делаете то, что Вам надо, при этом класс Logger ни фига не синглтон и может быть создан через фабрику.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202526
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но так как у вас принято соглашение работать только через IoC, то Вас это не волнует.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202559
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Во-первых, у него теперь закрытый конструктор)
Во-вторых, я не прихожу на форум со словами "зацените мою реализацию синглтона", понимая, что опираюсь именно на договоренность работы через Unity.
В-третьих, реализация ТС ограничивает мои возможности создать синглтон
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202582
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз обращаю ваше внимание:
вики Гарантирует , что у класса есть только один экземпляр.
Реализация ТС не только не гарантирует этого, она требует разрешить создание объектов (открытый конструктор). О каком синглтоне может идти речь?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202724
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchskyANA,

Во-первых, у него теперь закрытый конструктор)У кого у него? :) Вы прикалываетесь? Обновил версию Unity - перепиши свои классы! Они устрианили ошибку, что возникала, если конструктор НЕ открытый. То есть с открытым конструктором всё прекрасно работало, и я думаю и сейчас также прекрасно продолжает работать.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202785
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

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

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

Можете и не переписывать. К теме относится слабо.Почему слабо? Реализация Unity также не гарантирует, что класс не будет создан через прямой вызов конструктора, или через фабрику. Однако на практике это мало кого волнует.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202845
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAчто класс экземпляр класса не будет создан через прямой вызов конструктора, или через фабрику
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202888
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

потому что класс не становится реализующим шаблон одиночки от того что Unity возвращает на все запросы 1 экземпляр.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202894
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, дак у ТС тоже класс не становится реализующим шаблон одиночки, если его экземпляр возвращается так: Singleton<MyClass>.Instance.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38202943
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

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

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

упоминание IoC было в ответ на это сообщение ТС:

ТСТак вот что я хочу сказать... Lelouch и все кто тебя поддерживали :) вы хотя бы, работали с кодом из пару десятков тысяч строк?:) когда ты понимаешь что это никаким рефакторингом не лечиться, (ибо рефакторить не дадут ни времени ни средств) :(, а от тебя требуют новой, ну просто вот так нужной функциональности, вот после такого опыта понимаешь что писать нужно как можно меньше и как можно понятнее, и если шаблон не ведет проектирования себя так нужно значит шаблон нужно менять, слить вместе 2 или 3 шаблона, но при этом оставив понятность и простоту кода, ну а то что в данном случае придется чем то поступиться... ну что ж так тому и быть

То есть если вдруг мне придется изменить поведение, я изменю конфигурацию Unity, я не буду "сливать вместе 2 или 3 шаблона".
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38203023
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, зачем Вы уходите от прямого ответа на вопросы?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38203024
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее вы видите в моих ответах то, чего там нет.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38203027
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

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

Обеспечивает похожее поведение при условии использования только Unity для получения экземпляра.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38203053
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch, ну значит и реализации ТС обеспечивает похожее поведение при условии использования только Singleton<TClass> для получения экземпляра. Остановимся на этом.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38203070
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

но синглтоном не является)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38203477
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что мешает при использовании generic-фабрики синглетонов применить приватный конструктор?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
class MyClass
{
    public static MyClass I
    {
        get { return Singleton<MyClass>.GetInstance(() => new MyClass()); }
    }

    MyClass()
    { }
}
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38203659
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЧто мешает при использовании generic-фабрики синглетонов применить приватный конструктор?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
class MyClass
{
    public static MyClass I
    {
        get { return Singleton<MyClass>.GetInstance(() => new MyClass()); }
    }

    MyClass()
    { }
}

Насколько я понимаю, это противоречит идее ТС, поскольку MyClass вообще нафиг не ничего не должен знать о Singleton<T>.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38203680
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex KuznetsovНасколько я понимаю, это противоречит идее ТС, поскольку MyClass вообще нафиг не ничего не должен знать о Singleton<T>.Мне показалось, возмущение вызвал тот факт, что нельзя совместить создание синглетона через generic-фабрику и при этом иметь приватный конструктор. Пример выше показывает что это не так.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38203805
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сингтон-шминглтон... Лучше скажите, каково его прикладное применение? Длянафига он нужен? Что-то не припомню, чтобы у меня была нужна в сущности, обладающей характеристиками синглтона.

ПС: Раздел "применение" тут ни о чем. Копипаста раздела "цель", перечисляющего характеристики синглтона, с которыми и так все ясно.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38203830
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyЛучше скажите, каково его прикладное применение?Что-то, что существует в единственном экземпляре. При этом, оформление "этого" статическим классом связано с различными сложностями/невозможностями. Например, если нужно реализовать интерфейс или организовать полиморфизм. Датабиндинг на статические свойства тоже как-то не очень...
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38203909
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КAntonariyЛучше скажите, каково его прикладное применение?Что-то, что существует в единственном экземпляре. При этом, оформление "этого" статическим классом связано с различными сложностями/невозможностями. Например, если нужно реализовать интерфейс или организовать полиморфизм. Датабиндинг на статические свойства тоже как-то не очень...Я просил прикладное, а не сферическое "что-то" в вакууме.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38204073
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyСингтон-шминглтон... Лучше скажите, каково его прикладное применение? Длянафига он нужен? Что-то не припомню, чтобы у меня была нужна в сущности, обладающей характеристиками синглтона. К примеру:
Класс логирования с единой точкой доступа для всего приложения...
Единая фабрика объектов - может реализовать два шаблона синглтон и фабрика.
Единый объект для работы с хранилищем данных, доступный из разных подключаемых библиотек...

Всё зависит от задач и архитектуры...
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38204083
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyАлексей Кпропущено...
Что-то, что существует в единственном экземпляре. При этом, оформление "этого" статическим классом связано с различными сложностями/невозможностями. Например, если нужно реализовать интерфейс или организовать полиморфизм. Датабиндинг на статические свойства тоже как-то не очень...Я просил прикладное, а не сферическое "что-то" в вакууме.Контейнер документов в TabbedMDI интерфейсе устроит? :-)
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38204171
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex KuznetsovКласс логирования с единой точкой доступа для всего приложения...Заменяется модулем с глобальными процедурами. Зачем здесь особенности синглтона?
Alex KuznetsovЕдиная фабрика объектов - может реализовать два шаблона синглтон и фабрика.Сферично.
Alex KuznetsovЕдиный объект для работы с хранилищем данных, доступный из разных подключаемых библиотек.А вот тут ничего не скажешь, синглтон маст хэв.
Алексей ККонтейнер документов в TabbedMDI интерфейсе устроит? :-)Заменяется глобальной коллекцией.

В общем, примерно понятно.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38204182
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyАлексей ККонтейнер документов в TabbedMDI интерфейсе устроит? :-)Заменяется глобальной коллекцией.

В общем, примерно понятно.Можно придумать ещё с десяток вариантов чем "это" можно заменить. Но зачем?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38204191
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КAntonariyпропущено...
Заменяется глобальной коллекцией.

В общем, примерно понятно.Можно придумать ещё с десяток вариантов чем "это" можно заменить. Но зачем?Затем, что пяток из них проще.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38204238
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyAlex KuznetsovКласс логирования с единой точкой доступа для всего приложения...Заменяется модулем с глобальными процедурами. Зачем здесь особенности синглтона? Да, и при этом прописывается глобальная процедура инициализации для объекта, который производит логирование... Ну ну...
AntonariyAlex KuznetsovЕдиная фабрика объектов - может реализовать два шаблона синглтон и фабрика.Сферично.В каком смысле сферично? Вам пример привести?
AntonariyAlex KuznetsovЕдиный объект для работы с хранилищем данных, доступный из разных подключаемых библиотек.А вот тут ничего не скажешь, синглтон маст хэв. Я и не говорил что MUST HAVE, я говорил CAN HAVE... Разницу улавливаете?

В общем батенька, троллить начинаете поманеньку?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38204289
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex KuznetsovВ каком смысле сферично? Вам пример привести?Не надо.
Alex KuznetsovЯ и не говорил что MUST HAVE, я говорил CAN HAVE... Разницу улавливаете?Я и не говорил, что вы говорили, что MUST HAVE. Это сказал я. Разницу улавливаете?
Alex KuznetsovВ общем батенька, троллить начинаете поманеньку? Ой, кто бы это говорил...
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38204334
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyAlex KuznetsovВ общем батенька, троллить начинаете поманеньку? Ой, кто бы это говорил...Пример моего троления в этой теме в студию...
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38204340
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex KuznetsovAntonariyпропущено...
Ой, кто бы это говорил...Пример моего троления в этой теме в студию...какой миленький нюансик
а впрочем...
Alex KuznetsovВ общем батенька, троллить начинаете поманеньку?Обвинение в троллинге это довольно жирная его разновидность, не находите?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38204433
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyАлексей Кпропущено...
Можно придумать ещё с десяток вариантов чем "это" можно заменить. Но зачем?Затем, что пяток из них проще.Чем проще?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38204435
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyAlex Kuznetsovпропущено...
Пример моего троления в этой теме в студию...какой миленький нюансик А то ! Мы тоже не лаптем деланые
AntonariyAlex KuznetsovВ общем батенька, троллить начинаете поманеньку?Обвинение в троллинге это довольно жирная его разновидность, не находите?Ну так можно всё что угодно извернуть...

Ладно, закрываем эту тему.
Каждый всё равно останется по вопросу ТС при своём мнении...

А кидаться какашками - не в моём стиле...

PEACE?
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38204472
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да.
...
Рейтинг: 0 / 0
Имеет ли право существовать такой подход к сиглетону?
    #38204473
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой! Двусмысленно получилось.
Я не нарочно :)
...
Рейтинг: 0 / 0
306 сообщений из 306, показаны все 13 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Имеет ли право существовать такой подход к сиглетону?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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