Вот есть тут у нас код, пИсаный пару лет назад.
Каждый класс, который представляет собой набор функций (business/application logic layer), юзается через синглтоны! Почему? Ведь ни один из них не содержит переменных (кроме статиковых). Есть тому разумная причина для .Нет платформы?
Здравствуйте, _ks_, Вы писали:
__>Каждый класс, который представляет собой набор функций (business/application logic layer), юзается через синглтоны! Почему? Ведь ни один из них не содержит переменных (кроме статиковых). Есть тому разумная причина для .Нет платформы?
Например, два синглетона могу реализовывать один и тот же интерфейс. И может быть метод, тип одного из параметров которого является этим же интерфейсом. Теперь можно передать в этот метод экземпляр одного или другого синглетона, достигая этим полиморфного поведения. Со статическими классами такое в .NET сделать невозможно.
Здравствуйте, _ks_, Вы писали:
__>Всем добр. [время суток].
__>Вот есть тут у нас код, пИсаный пару лет назад. __>Каждый класс, который представляет собой набор функций (business/application logic layer), юзается через синглтоны! Почему? Ведь ни один из них не содержит переменных (кроме статиковых). Есть тому разумная причина для .Нет платформы?
__>Спасибо заранее ответившим по делу.
Своеобрзная реализация синглтона у Вас ...
Можно кусок кода в студию
__>>Вот есть тут у нас код, пИсаный пару лет назад. __>>Каждый класс, который представляет собой набор функций (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()
__>>>Вот есть тут у нас код, пИсаный пару лет назад. __>>>Каждый класс, который представляет собой набор функций (business/application logic layer), юзается через синглтоны! Почему? Ведь ни один из них не содержит переменных (кроме статиковых). Есть тому разумная причина для .Нет платформы?
__>>>Спасибо заранее ответившим по делу. K>>Своеобрзная реализация синглтона у Вас ... K>>Можно кусок кода в студию
__>И потом юзание только через MyClass.Instance.SomeMethod()
хм ... стандартная реализация сингетона, было бы неплохо добавить потоко безопастность, но в целом нормально ....
так а "переменных" статических что то я не вижу ... Кстати, под переменными вы имеете ввиду поля? ...
ничто не мешает добавить добавлять не статические поля,свойства,методы и др. ...
Что Вас инетерсует, Вам не понятна реализация синглетона или что?
Здравствуйте, _ks_, Вы писали:
__>Вот есть тут у нас код, пИсаный пару лет назад. __>Каждый класс, который представляет собой набор функций (business/application logic layer), юзается через синглтоны! Почему? Ведь ни один из них не содержит переменных (кроме статиковых). Есть тому разумная причина для .Нет платформы?
__>Спасибо заранее ответившим по делу.
Здравствуйте, _Morpheus_, Вы писали:
_M_>статики это зло
А почему зло? У меня вот тоже есть класс, котрый служит для преобразования из/в — очень простой и ему не нужен экземпляр класса. Или там есть какие-то подковырки со static?
Здравствуйте, _Morpheus_, Вы писали:
_M_>Здравствуйте, _ks_, Вы писали:
__>>Вот есть тут у нас код, пИсаный пару лет назад. __>>Каждый класс, который представляет собой набор функций (business/application logic layer), юзается через синглтоны! Почему? Ведь ни один из них не содержит переменных (кроме статиковых). Есть тому разумная причина для .Нет платформы?
__>>Спасибо заранее ответившим по делу.
_M_>статики это зло
__>>И потом юзание только через MyClass.Instance.SomeMethod() K>хм ... стандартная реализация сингетона, было бы неплохо добавить потоко безопастность, но в целом нормально .... K>так а "переменных" статических что то я не вижу ... Кстати, под переменными вы имеете ввиду поля? ... K>ничто не мешает добавить добавлять не статические поля,свойства,методы и др. ... K>Что Вас инетерсует, Вам не понятна реализация синглетона или что?
Меня интересует, почему те, кто начинал писать это дело, ВЕЗДЕ юзают синглотны, где достаточно было обычных статик функций?
И таких вот бесполезных синглтонов сотни!
Здравствуйте, Spender, Вы писали:
_M_>>статики это зло
S>А почему зло? У меня вот тоже есть класс, котрый служит для преобразования из/в — очень простой и ему не нужен экземпляр класса. Или там есть какие-то подковырки со static?
ну вот сделаешь ты переменную static, т.к. якобы незачем ее в экземпляре класса хранить, через некоторое время по коду будет разбросано обращение к этой переменной из разных мест, причем и из таких откуда экземпляр класса не доступен. А потом вдруг окажется что нужно использовать разные значения этой переменной в зависимости от экземпляра класса. Вот тут и начнется головная боль по переделке кучи кода использующего этот класс...
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, _ks_, Вы писали:
__>>Каждый класс, который представляет собой набор функций (business/application logic layer), юзается через синглтоны! Почему? Ведь ни один из них не содержит переменных (кроме статиковых). Есть тому разумная причина для .Нет платформы?
N>Например, два синглетона могу реализовывать один и тот же интерфейс. И может быть метод, тип одного из параметров которого является этим же интерфейсом. Теперь можно передать в этот метод экземпляр одного или другого синглетона, достигая этим полиморфного поведения. Со статическими классами такое в .NET сделать невозможно.
N>Еще один пример: паттерн Service Locator.
Спасибо за наводку. Но ни то ни другое у нас не используется. Так что вопрос остаётся открытым. Зачем они каждый класс с простым набором методов пихают в синглтон?
Здравствуйте, _Morpheus_, Вы писали:
_M_>Здравствуйте, Spender, Вы писали:
_M_>>>статики это зло
S>>А почему зло? У меня вот тоже есть класс, котрый служит для преобразования из/в — очень простой и ему не нужен экземпляр класса. Или там есть какие-то подковырки со static?
_M_>ну вот сделаешь ты переменную static, т.к. якобы незачем ее в экземпляре класса хранить, через некоторое время по коду будет разбросано обращение к этой переменной из разных мест, причем и из таких откуда экземпляр класса не доступен. А потом вдруг окажется что нужно использовать разные значения этой переменной в зависимости от экземпляра класса. Вот тут и начнется головная боль по переделке кучи кода использующего этот класс...
Хм... В моей ситуации даже статик переменных нету, в каждом из классов просто набор функций. Так что аргумент лично меня не убедил.
Здравствуйте, _Morpheus_, Вы писали:
_M_>ну вот сделаешь ты переменную static, т.к. якобы незачем ее в экземпляре класса хранить, через некоторое время
А я про переменную не говорил. Это же как аналог глобальной переменной — а это зло
Я про класс говорю
Здравствуйте, _ks_, Вы писали:
__>Спасибо за наводку. Но ни то ни другое у нас не используется. Так что вопрос остаётся открытым. Зачем они каждый класс с простым набором методов пихают в синглтон?
Может быть, задел на будущее. А может быть, привычка... Откуда ж я знаю, что у вас имели в виду?
Документация по архитектуре сохранилась?
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, _ks_, Вы писали:
__>>Спасибо за наводку. Но ни то ни другое у нас не используется. Так что вопрос остаётся открытым. Зачем они каждый класс с простым набором методов пихают в синглтон?
N>Может быть, задел на будущее. А может быть, привычка... Откуда ж я знаю, что у вас имели в виду? N>Документация по архитектуре сохранилась?
Кое-что есть, но именно этого там нет. Буду искать встречи с архитекторами.
Здравствуйте, _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 статиком. И тогда весь остальной код и переделывать не пришлось бы...
Здравствуйте, _ks_, Вы писали:
__>Каждый класс, который представляет собой набор функций (business/application logic layer), юзается через синглтоны! Почему? Ведь ни один из них не содержит переменных (кроме статиковых). Есть тому разумная причина для .Нет платформы?
Судя по описанию некто прочитал книжку по паттернам, а ума не прибавилось.