Синглтоны в C#
От: _ks_  
Дата: 06.07.07 09:27
Оценка:
Всем добр. [время суток].

Вот есть тут у нас код, пИсаный пару лет назад.
Каждый класс, который представляет собой набор функций (business/application logic layer), юзается через синглтоны! Почему? Ведь ни один из них не содержит переменных (кроме статиковых). Есть тому разумная причина для .Нет платформы?

Спасибо заранее ответившим по делу.
Re: Синглтоны в C#
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 06.07.07 09:34
Оценка:
Здравствуйте, _ks_, Вы писали:

__>Спасибо заранее ответившим по делу.


Какую архитектуру напридумывали, когда писали, такую и получили. .NET тут ни при чем.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
HgLab: Mercurial Server and Repository Management for Windows
Re: Синглтоны в C#
От: nikov США http://www.linkedin.com/in/nikov
Дата: 06.07.07 09:35
Оценка:
Здравствуйте, _ks_, Вы писали:

__>Каждый класс, который представляет собой набор функций (business/application logic layer), юзается через синглтоны! Почему? Ведь ни один из них не содержит переменных (кроме статиковых). Есть тому разумная причина для .Нет платформы?


Например, два синглетона могу реализовывать один и тот же интерфейс. И может быть метод, тип одного из параметров которого является этим же интерфейсом. Теперь можно передать в этот метод экземпляр одного или другого синглетона, достигая этим полиморфного поведения. Со статическими классами такое в .NET сделать невозможно.

Еще один пример: паттерн Service Locator.
Re: Синглтоны в C#
От: kisel Украина  
Дата: 06.07.07 09:39
Оценка: +1
Здравствуйте, _ks_, Вы писали:

__>Всем добр. [время суток].


__>Вот есть тут у нас код, пИсаный пару лет назад.

__>Каждый класс, который представляет собой набор функций (business/application logic layer), юзается через синглтоны! Почему? Ведь ни один из них не содержит переменных (кроме статиковых). Есть тому разумная причина для .Нет платформы?

__>Спасибо заранее ответившим по делу.

Своеобрзная реализация синглтона у Вас ...
Можно кусок кода в студию
Re[2]: Синглтоны в C#
От: _ks_  
Дата: 06.07.07 10:13
Оценка:
__>>Вот есть тут у нас код, пИсаный пару лет назад.
__>>Каждый класс, который представляет собой набор функций (business/application logic layer), юзается через синглтоны! Почему? Ведь ни один из них не содержит переменных (кроме статиковых). Есть тому разумная причина для .Нет платформы?

__>>Спасибо заранее ответившим по делу.

K>Своеобрзная реализация синглтона у Вас ...
K>Можно кусок кода в студию


        private MyClass()
        {
        }

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


И потом юзание только через MyClass.Instance.SomeMethod()
Re[3]: Синглтоны в C#
От: kisel Украина  
Дата: 06.07.07 10:23
Оценка:
Здравствуйте, _ks_, Вы писали:


__>>>Вот есть тут у нас код, пИсаный пару лет назад.

__>>>Каждый класс, который представляет собой набор функций (business/application logic layer), юзается через синглтоны! Почему? Ведь ни один из них не содержит переменных (кроме статиковых). Есть тому разумная причина для .Нет платформы?

__>>>Спасибо заранее ответившим по делу.

K>>Своеобрзная реализация синглтона у Вас ...
K>>Можно кусок кода в студию


__>
__>        private MyClass()
__>        {
__>        }

__>        private static MyClass fInstance;
__>        public static MyClass Instance
__>        {
__>            get
__>            {
__>                if (fInstance == null)
__>                    fInstance = new MyClass();
__>                return fInstance;
__>            }
__>        }
__>


__>И потом юзание только через MyClass.Instance.SomeMethod()

хм ... стандартная реализация сингетона, было бы неплохо добавить потоко безопастность, но в целом нормально ....
так а "переменных" статических что то я не вижу ... Кстати, под переменными вы имеете ввиду поля? ...
ничто не мешает добавить добавлять не статические поля,свойства,методы и др. ...
Что Вас инетерсует, Вам не понятна реализация синглетона или что?
Re: Синглтоны в C#
От: _Morpheus_  
Дата: 06.07.07 10:58
Оценка:
Здравствуйте, _ks_, Вы писали:

__>Вот есть тут у нас код, пИсаный пару лет назад.

__>Каждый класс, который представляет собой набор функций (business/application logic layer), юзается через синглтоны! Почему? Ведь ни один из них не содержит переменных (кроме статиковых). Есть тому разумная причина для .Нет платформы?

__>Спасибо заранее ответившим по делу.


статики это зло
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[2]: Синглтоны в C#
От: Spender Канада http://rybkov.livejournal.com
Дата: 06.07.07 11:01
Оценка:
Здравствуйте, _Morpheus_, Вы писали:

_M_>статики это зло


А почему зло? У меня вот тоже есть класс, котрый служит для преобразования из/в — очень простой и ему не нужен экземпляр класса. Или там есть какие-то подковырки со static?
Re[2]: Синглтоны в C#
От: _ks_  
Дата: 06.07.07 11:31
Оценка:
Здравствуйте, _Morpheus_, Вы писали:

_M_>Здравствуйте, _ks_, Вы писали:


__>>Вот есть тут у нас код, пИсаный пару лет назад.

__>>Каждый класс, который представляет собой набор функций (business/application logic layer), юзается через синглтоны! Почему? Ведь ни один из них не содержит переменных (кроме статиковых). Есть тому разумная причина для .Нет платформы?

__>>Спасибо заранее ответившим по делу.


_M_>статики это зло


Аргументируйте, плиз. Ибо я так не считаю.
Re[4]: Синглтоны в C#
От: _ks_  
Дата: 06.07.07 11:33
Оценка:
__>>И потом юзание только через MyClass.Instance.SomeMethod()
K>хм ... стандартная реализация сингетона, было бы неплохо добавить потоко безопастность, но в целом нормально ....
K>так а "переменных" статических что то я не вижу ... Кстати, под переменными вы имеете ввиду поля? ...
K>ничто не мешает добавить добавлять не статические поля,свойства,методы и др. ...
K>Что Вас инетерсует, Вам не понятна реализация синглетона или что?

Меня интересует, почему те, кто начинал писать это дело, ВЕЗДЕ юзают синглотны, где достаточно было обычных статик функций?
И таких вот бесполезных синглтонов сотни!
Re[3]: Синглтоны в C#
От: _Morpheus_  
Дата: 06.07.07 11:33
Оценка:
Здравствуйте, Spender, Вы писали:

_M_>>статики это зло


S>А почему зло? У меня вот тоже есть класс, котрый служит для преобразования из/в — очень простой и ему не нужен экземпляр класса. Или там есть какие-то подковырки со static?


ну вот сделаешь ты переменную static, т.к. якобы незачем ее в экземпляре класса хранить, через некоторое время по коду будет разбросано обращение к этой переменной из разных мест, причем и из таких откуда экземпляр класса не доступен. А потом вдруг окажется что нужно использовать разные значения этой переменной в зависимости от экземпляра класса. Вот тут и начнется головная боль по переделке кучи кода использующего этот класс...
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[2]: Синглтоны в C#
От: _ks_  
Дата: 06.07.07 11:36
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, _ks_, Вы писали:


__>>Каждый класс, который представляет собой набор функций (business/application logic layer), юзается через синглтоны! Почему? Ведь ни один из них не содержит переменных (кроме статиковых). Есть тому разумная причина для .Нет платформы?


N>Например, два синглетона могу реализовывать один и тот же интерфейс. И может быть метод, тип одного из параметров которого является этим же интерфейсом. Теперь можно передать в этот метод экземпляр одного или другого синглетона, достигая этим полиморфного поведения. Со статическими классами такое в .NET сделать невозможно.


N>Еще один пример: паттерн Service Locator.


Спасибо за наводку. Но ни то ни другое у нас не используется. Так что вопрос остаётся открытым. Зачем они каждый класс с простым набором методов пихают в синглтон?
Re[4]: Синглтоны в C#
От: _ks_  
Дата: 06.07.07 11:38
Оценка:
Здравствуйте, _Morpheus_, Вы писали:

_M_>Здравствуйте, Spender, Вы писали:


_M_>>>статики это зло


S>>А почему зло? У меня вот тоже есть класс, котрый служит для преобразования из/в — очень простой и ему не нужен экземпляр класса. Или там есть какие-то подковырки со static?


_M_>ну вот сделаешь ты переменную static, т.к. якобы незачем ее в экземпляре класса хранить, через некоторое время по коду будет разбросано обращение к этой переменной из разных мест, причем и из таких откуда экземпляр класса не доступен. А потом вдруг окажется что нужно использовать разные значения этой переменной в зависимости от экземпляра класса. Вот тут и начнется головная боль по переделке кучи кода использующего этот класс...


Хм... В моей ситуации даже статик переменных нету, в каждом из классов просто набор функций. Так что аргумент лично меня не убедил.
Re[4]: Синглтоны в C#
От: Spender Канада http://rybkov.livejournal.com
Дата: 06.07.07 11:39
Оценка:
Здравствуйте, _Morpheus_, Вы писали:

_M_>ну вот сделаешь ты переменную static, т.к. якобы незачем ее в экземпляре класса хранить, через некоторое время


А я про переменную не говорил. Это же как аналог глобальной переменной — а это зло
Я про класс говорю
Re[3]: Синглтоны в C#
От: nikov США http://www.linkedin.com/in/nikov
Дата: 06.07.07 11:42
Оценка:
Здравствуйте, _ks_, Вы писали:

__>Спасибо за наводку. Но ни то ни другое у нас не используется. Так что вопрос остаётся открытым. Зачем они каждый класс с простым набором методов пихают в синглтон?


Может быть, задел на будущее. А может быть, привычка... Откуда ж я знаю, что у вас имели в виду?
Документация по архитектуре сохранилась?
Re[4]: Синглтоны в C#
От: _ks_  
Дата: 06.07.07 11:52
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, _ks_, Вы писали:


__>>Спасибо за наводку. Но ни то ни другое у нас не используется. Так что вопрос остаётся открытым. Зачем они каждый класс с простым набором методов пихают в синглтон?


N>Может быть, задел на будущее. А может быть, привычка... Откуда ж я знаю, что у вас имели в виду?

N>Документация по архитектуре сохранилась?

Кое-что есть, но именно этого там нет. Буду искать встречи с архитекторами.
Re[5]: Синглтоны в C#
От: _Morpheus_  
Дата: 06.07.07 12:05
Оценка:
Здравствуйте, _ks_, Вы писали:

S>>>А почему зло? У меня вот тоже есть класс, котрый служит для преобразования из/в — очень простой и ему не нужен экземпляр класса. Или там есть какие-то подковырки со static?


_M_>>ну вот сделаешь ты переменную static, т.к. якобы незачем ее в экземпляре класса хранить, через некоторое время по коду будет разбросано обращение к этой переменной из разных мест, причем и из таких откуда экземпляр класса не доступен. А потом вдруг окажется что нужно использовать разные значения этой переменной в зависимости от экземпляра класса. Вот тут и начнется головная боль по переделке кучи кода использующего этот класс...


__>Хм... В моей ситуации даже статик переменных нету, в каждом из классов просто набор функций. Так что аргумент лично меня не убедил.


приведу пример:
    public class Data
    {
        public static string Data1 = string.Empty;

        public string Data2 = string.Empty;

        public void Print()
        {
            Console.WriteLine(Data1);
            Console.WriteLine(Data2);
        }
    }

    public class Program
    {
        static void Main()
        {
            doSomeWork();
            
            Data data = new Data();
            data.Data2 = "data2";
            data.Print();
        }

        private static void doSomeWork()
        {
            Data.Data1 = "data1";
        }
    }


допустим метод doSomeWork это некий код разбросаный по разным классам, в которых экземпляр Data не доступен, а порой и протянуть без нарушения работоспособности или переделки всей структуры кода невозможно.

А теперь вдруг понадобилось создавать экземпляры Data с разными значениями Data1... Прийдется перелопачивать весь код, протягивать экземпляр Data в различные классы, в глубокие методы, которые изначально явно не подразумевали наличие класса Data и потому просто протянуть в них экземпляр Data никак не получится. Это повлечет за собой переделывание структуры объектов, переделывание кода...

А ведь этого можно было избежать, достаточно было не делать Data1 статиком. И тогда весь остальной код и переделывать не пришлось бы...
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[6]: Синглтоны в C#
От: _ks_  
Дата: 06.07.07 12:11
Оценка:
Большое спасибо за подробное объяснение, но всё это было и так понятно из предыдущего Вашего сообщения.

Как было сказано выше, статик переенная в классе — это тоже самое, что глобальная переменная.

Я как понимаю Вы просто не поняли, что мне начхать на эту проблему, ибо в моём случае

даже статик переменных нету

, вообще никаких переменных нету. Классы представляют из себя набор функций и ничего более.

Так что смысл было делать синглтоны для меня до сих пор неясен. Я ищу ПРИЧИНУ присутствия синглтонов в _моём_ коде.
Re: Синглтоны в C#
От: Lloyd Россия  
Дата: 06.07.07 13:23
Оценка: +1
Здравствуйте, _ks_, Вы писали:

__>Каждый класс, который представляет собой набор функций (business/application logic layer), юзается через синглтоны! Почему? Ведь ни один из них не содержит переменных (кроме статиковых). Есть тому разумная причина для .Нет платформы?


Судя по описанию некто прочитал книжку по паттернам, а ума не прибавилось.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: Синглтоны в C#
От: Igor Trofimov  
Дата: 06.07.07 16:49
Оценка:
__>Так что смысл было делать синглтоны для меня до сих пор неясен. Я ищу ПРИЧИНУ присутствия синглтонов в _моём_ коде.

Может к ним у вас там удаленный доступ имеется (Remoting)?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.