Singleton vs. Static functions
От: Варвар США  
Дата: 08.02.05 07:50
Оценка:
По определению singleton гарантирует существование единственного экземпляра определенного класса и предоставляет глобальную точку доступа к этому экземпляру. Того же можно добится используя в классе статические переменные и функции. Получается, что необходимость в синглтоне отпадает. Я что то упустил?
И вместо сердца каменный топор...
Re: Singleton vs. Static functions
От: GarryIV  
Дата: 08.02.05 08:00
Оценка:
Hello, Варвар!

В> По определению singleton гарантирует существование единственного

В> экземпляра определенного класса и предоставляет глобальную точку доступа
В> к этому экземпляру. Того же можно добится используя в классе статические
В> переменные и функции. Получается, что необходимость в синглтоне
В> отпадает. Я что то упустил?

Баян
http://www.rsdn.ru/forum/?mid=1006572
Автор: IDm
Дата: 27.01.05


WBR, Igor Evgrafov.
Posted via RSDN NNTP Server 1.9
WBR, Igor Evgrafov
Re[2]: Singleton vs. Static functions
От: GarryIV  
Дата: 08.02.05 08:03
Оценка:
G> Hello, Варвар!

В>> По определению singleton гарантирует существование единственного

В>> экземпляра определенного класса и предоставляет глобальную точку
В>> доступа к этому экземпляру. Того же можно добится используя в классе
В>> статические переменные и функции. Получается, что необходимость в
В>> синглтоне отпадает. Я что то упустил?

G> Баян

G> http://www.rsdn.ru/forum/?mid=1006572
Автор: IDm
Дата: 27.01.05


Точнее лучше сразу сюда
http://rsdn.ru/Forum/Message.aspx?mid=1008488&only=1
Автор: Igor Trofimov
Дата: 27.01.05


WBR, Igor Evgrafov.
Posted via RSDN NNTP Server 1.9
WBR, Igor Evgrafov
Re[3]: Singleton vs. Static functions
От: Mika Soukhov Stock#
Дата: 08.02.05 08:12
Оценка:
Здравствуйте, GarryIV, Вы писали:

GIV>Точнее лучше сразу сюда

GIV>http://rsdn.ru/Forum/Message.aspx?mid=1008488&only=1
Автор: Igor Trofimov
Дата: 27.01.05


GIV>WBR, Igor Evgrafov.


Например, проверка безопасности. Можно сделать один раз, при обращении к экзмепляру синглетона, или каждый раз в статических методах.
Re[3]: Singleton vs. Static functions
От: Варвар США  
Дата: 08.02.05 08:14
Оценка:
Здравствуйте, GarryIV, Вы писали:

G>> Hello, Варвар!


В>>> По определению singleton гарантирует существование единственного

В>>> экземпляра определенного класса и предоставляет глобальную точку
В>>> доступа к этому экземпляру. Того же можно добится используя в классе
В>>> статические переменные и функции. Получается, что необходимость в
В>>> синглтоне отпадает. Я что то упустил?

G>> Баян

G>> http://www.rsdn.ru/forum/?mid=1006572
Автор: IDm
Дата: 27.01.05


GIV>Точнее лучше сразу сюда

GIV>http://rsdn.ru/Forum/Message.aspx?mid=1008488&only=1
Автор: Igor Trofimov
Дата: 27.01.05


GIV>WBR, Igor Evgrafov.


Сори. Пропустил свежие темы. Спасибо за ссылки.
И вместо сердца каменный топор...
Re: Singleton vs. Static functions
От: GlebZ Россия  
Дата: 08.02.05 09:08
Оценка: 1 (1) -4 :)
Здравствуйте, Варвар, Вы писали:

В>По определению singleton гарантирует существование единственного экземпляра определенного класса и предоставляет глобальную точку доступа к этому экземпляру. Того же можно добится используя в классе статические переменные и функции. Получается, что необходимость в синглтоне отпадает. Я что то упустил?


Singleton — понятие Net Remoting или паттерн. Статические переменные и функции — понятия языка реализации. И каким образом ты их хочешь сравнивать?

С уважением, Gleb.
Re: Singleton vs. Static functions
От: Аноним  
Дата: 08.02.05 09:30
Оценка:
Здравствуйте, Варвар, Вы писали:

В>По определению singleton гарантирует существование единственного экземпляра определенного класса и предоставляет глобальную точку доступа к этому экземпляру. Того же можно добится используя в классе статические переменные и функции. Получается, что необходимость в синглтоне отпадает. Я что то упустил?


Ага, пару мелочей .

1. В достаточно большом приложении таких одиночек может оказаться много, и они могут взаимодействовать между собой. В случае использования статических конструкторов ты не можешь управлять порядком их инициализации. Порядком инициализации одиночек управлять не надо. Проблемы просто нет.

2. Например, у меня есть синглтон — инкапсуляция соединения с БД. Казалось, что на всё приложение оно одно, но оказалось, что в паре мест (импорт данных, к примеру) это не так. Функционал этого класса использовать хотелось. Даже очень Добавил к нему метод get_ExclusiveInstance, и всё решилось. Со static так не получилось бы. Мелочь, а приятно
Re[2]: Singleton vs. Static functions
От: Варвар США  
Дата: 08.02.05 09:56
Оценка:
Здравствуйте, GlebZ, Вы писали:

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


В>>По определению singleton гарантирует существование единственного экземпляра определенного класса и предоставляет глобальную точку доступа к этому экземпляру. Того же можно добится используя в классе статические переменные и функции. Получается, что необходимость в синглтоне отпадает. Я что то упустил?


GZ>Singleton — понятие Net Remoting или паттерн. Статические переменные и функции — понятия языка реализации. И каким образом ты их хочешь сравнивать?


GZ>С уважением, Gleb.

Я хочу сравнить два различных варианта решения проблемы доступа к одному и тому же набору данных из любого места в программе. Возможные варианты — это применение класса использующего паттерн сингелтон, или применение класса использующего статические методы.
И вместо сердца каменный топор...
Re[2]: Singleton vs. Static functions
От: Варвар США  
Дата: 08.02.05 10:10
Оценка:
Здравствуйте, Аноним, Вы писали:

А>1. В достаточно большом приложении таких одиночек может оказаться много, и они могут взаимодействовать между собой. В случае использования статических конструкторов ты не можешь управлять порядком их инициализации. Порядком инициализации одиночек управлять не надо. Проблемы просто нет.


Большое кол-во одиночек — проблема в дизайне. Разгребаю как раз такое приложение. 80% классов синглтоны. Возможность их повторного использования — 0. Все завязаны друг на друге. Лучше чтоб они были обычными классами и для каждого конкретного приложения писалась обертка создающая единственный екземпляр необходимых классов в нужном порядке, а затем предоставляющая доступ к этим екземплярам.
И вместо сердца каменный топор...
Re[3]: Singleton vs. Static functions
От: GlebZ Россия  
Дата: 08.02.05 14:32
Оценка:
Здравствуйте, Варвар, Вы писали:


GZ>>Singleton — понятие Net Remoting или паттерн. Статические переменные и функции — понятия языка реализации. И каким образом ты их хочешь сравнивать?


GZ>>С уважением, Gleb.

В>Я хочу сравнить два различных варианта решения проблемы доступа к одному и тому же набору данных из любого места в программе. Возможные варианты — это применение класса использующего паттерн сингелтон, или применение класса использующего статические методы.
Проясняю, если у тебя функциональность тянет на некоторую инкапсулированную сущность, создавай синглтон объект(который создается не без помощи статических функций). Если не тянет или функциональность инкапсулирована в нормальный класс, то статическая переменная или лучше функция. Никакого противопоставления здесь нет, это разная гранулярность. Пользуйся тем, что тебе на данный момент удобно.

С уважением, Gleb.

PS: Синглтоны не люблю. Пользуюсь редко, только когда надо. Так как я человек ленивый, а работать приходится в многопоточных приложениях, то обычно создаю по инстансу на каждый поток. А то приходится писать синхронизацию и мучительно отлаживаться.
Re[4]: Singleton vs. Static functions
От: Варвар США  
Дата: 08.02.05 15:56
Оценка:

если у тебя функциональность тянет на некоторую инкапсулированную сущность

А по русски? Извини не понял.

С точки зрения инкапсуляции есть какая то разница между
MyClass.Instance.MyFunc();
и
MyClass.MyFunc();
И вместо сердца каменный топор...
Re[5]: Singleton vs. Static functions
От: GlebZ Россия  
Дата: 08.02.05 17:11
Оценка:
Здравствуйте, Варвар, Вы писали:

В>

В>если у тебя функциональность тянет на некоторую инкапсулированную сущность

В>А по русски? Извини не понял.

В>С точки зрения инкапсуляции есть какая то разница между

В>
В>MyClass.Instance.MyFunc();
В>
и

В>
В>MyClass.MyFunc();
В>

Теперь я уже не понял.


Синглтон — это объект который существует в единственном экземпляре. Все остальное уже особенности реализации.


public class MyClass
{
   public static MyClass myclass; //статический инстанс

   public DoSomething(){}; 
.....
}


public class MyClass
{
   private MyClass myclass;
   public static DoSomething(){myclass.DoSomthing();}; //статическая функция
}


Это все является реализациями синглтонов.


public class MyClass
{
    private int i;
    private static int j;
........
}

MyClass myclass=new MyClass();


Уже не является синглтоном. Хотя содержит статическую переменную — которая одинакова для всех созданных классов.

С уважением, Gleb.
Re[3]: Singleton vs. Static functions
От: Аноним  
Дата: 09.02.05 13:52
Оценка:
Здравствуйте, Варвар, Вы писали:

В>Большое кол-во одиночек — проблема в дизайне. Разгребаю как раз такое приложение. 80% классов синглтоны. Возможность их повторного использования — 0. Все завязаны друг на друге. Лучше чтоб они были обычными классами и для каждого конкретного приложения писалась обертка создающая единственный екземпляр необходимых классов в нужном порядке, а затем предоставляющая доступ к этим екземплярам.


И при изменениях в структуре синглтонов каждый раз переписывать все обёртки для всех приложений? Не то чтобы это так уж трудно, но во-первых скучно, а во-вторых, если их больше 10, я лично хоть какую-нибудь одну, но забуду

80% классов — одиночек это какое-то странное приложение трудно что-то представить.. я больше ~30 таких (либо сделанных как синглтоны, либо которых использовали как ты говоришь надо) ни в одном приложении не видел..
Re[4]: Singleton vs. Static functions
От: TechnoMen  
Дата: 23.09.06 13:11
Оценка:
GZ>PS: Синглтоны не люблю. Пользуюсь редко, только когда надо. Так как я человек ленивый, а работать приходится в многопоточных приложениях, то обычно создаю по инстансу на каждый поток. А то приходится писать синхронизацию и мучительно отлаживаться.

Как сделать "глобальные" поля на уровне потока ?
И что значит "инстанс"?
Re[5]: Singleton vs. Static functions
От: GlebZ Россия  
Дата: 23.09.06 15:05
Оценка:
Здравствуйте, TechnoMen, Вы писали:

TM>Как сделать "глобальные" поля на уровне потока ?

А так ли уж часто они нужны? Они нужны в строго определенных местах. Такие места легко локализовать, синхронизировать и протестировать на многопоточнось.
TM>И что значит "инстанс"?
Экземпляр класса.
... << RSDN@Home 1.2.0 alpha rev. 0>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.