powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Имеет ли право существовать такой подход к сиглетону?
25 сообщений из 306, страница 5 из 13
Имеет ли право существовать такой подход к сиглетону?
    #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
25 сообщений из 306, страница 5 из 13
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Имеет ли право существовать такой подход к сиглетону?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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