![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
||
|
np9mi7 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 553 Регистрация: 17.8.2003 Где: Volgograd, Russia Репутация: 5 Всего: 10 |
|
|||
|
||||
Hroft |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 20.10.2003 Где: Москва Репутация: нет Всего: 3 |
np9mi7: золотые слова.
Жаль нету смайлика ОВАЦИЯ. Я бы уважаемому Гидранту их парочку вставил (в сообщении своем). Всегда приятно почитать посты умного и начитанного человека, изумительно начитанного, весьма грамотного, пусть даже малость не следящего за язычком... |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 3 Всего: 172 |
Попробуй линк "Показать всё" пod смайлами. -------------------- |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
--------------------
|
|||
|
||||
Hroft |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 20.10.2003 Где: Москва Репутация: нет Всего: 3 |
Клево
![]() Гидрант: ![]() ![]() Ну да хорош оффтопить. Кстати, об Александреску. Loki пробовали пользовать? Как впечатления? Мне понравилось. Жаль только, что под разные компиляторы по-разному многие вещи делаются... Но это уже беда компиляторов. |
|||
|
||||
Fire-Plug |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 15.3.2005 Репутация: -1 Всего: 0 |
Пересмотрел полемику, чтобы понять с чего сыр-бор начался...
Если объект нужен однажды, то не проще создать его обычным образом, прямо в том месте, где он будет использован, а не строить предложенную выше конструкцию с однократным доступом, к-рая только потребляет ресурсы? Конструкцию такого типа следует назвать "Собака на сене или Сам не гам и другому не дам"-синглтон.
Создается впечатление, что данная фраза - это в лучшем случае искреннее заблуждение. В идее синглтона нет ничего даже близко похожего на процитированное утверждение. Как раз наоборот. Обратимся к "классикам"
Улавливаете разницу - уникальный объект или однократный объект? Синглтон разрабатывался для того, чтобы его чаще всего запрашивали много раз из разных мест в приложении. Обратная ситауция, когда нужно гарантировать, что объект будет использован только однажды... Зачем такой одноразовый объект в памяти держать - его следует уничтожать сразу после использования, а не занимать пусть даже 4 байта под его статический указатель. Т.е. требуется другая реализация, не основанаая на принципах построения синглтона и, соотственно, другое название - этакий object unitary(однократный) - Unitarion. Приведите примеры для такого Unitarion-а, имеющие приблизительно такой же вес, как и те, что привел Александреску. --------------------
Объясни другому - поймешь сам (Народная примета) |
||||||
|
|||||||
Domestic Cat |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 3 Всего: 172 |
А что значит "создать объект обычным образом"? Что, есть "необычное создание объекта"?
Какие ресурсы??? Если такие ресурсы считать то нужно идти на асме писать...
Вообще, ЧИТАЙ ВНИМАТЕЛЬНЕЕ - нигде у меня не написано, что объект нужен однажды. У меня написано, что "можно дать доступ один раз" и "попросил синглтон однажды." Потому все дальнейшие рассуждения - непонятно к чему вообще:
Посмотри внимательно на код, который я привел, и на то, что подразумевалось под словами "просят синглтон". "Просят" - значит вызывают метод getInstance, чтобы получить ссылку на уникальный объект. С этой ссылкой никто не мешает ничего делать - можешь хоть пятьдесят раз ее скопировать. Когда клиент вызывает этот метод, он ожидает, что уникальный объект будет создан. Потому, если метод вызван два раза, то в таком контексте это скорее будет означать баг. Не вижу никаких противоречий ни с кем. -------------------- |
||||||||
|
|||||||||
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
Боюсь мороки с передачей ссылки туда-сюда будет.. Кроме того, если отойти от стандартного синглетона, и сделать функцию-конструктор то геммороя будет горраааздо меньше, да и параметры можно передавать. Это сообщение отредактировал(а) chipset - 2.4.2005, 10:15 --------------------
|
||||
|
|||||
Domestic Cat |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 3 Всего: 172 |
Опять не понял, а кто мешает передавать параметры:
Синглтон не сделан раз и навсегда; делать его можно как хочешь, под твои нужды. Если многим классам нужна ссылка на объект синглтона, - пожалуйста, делай так. Но ИМО, чем большему количеству классов нужна ссылка, тем хуже дизайн. Недаром появилось понятие layered architecture - система разрабатывается слоями, чтобы уменьшить связи между классами. Чем больше классов завязаны на к-л объект, тем ригиднее такая структура, тем она хуже. В крайнем случае используется Медиатор, но лучше всего спроектировать так, чтобы синглтон был нужен одному классу. -------------------- |
||||||
|
|||||||
chipset |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
Чтобы не быть голословным:
--------------------
|
||||||
|
|||||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 3 Всего: 172 |
Во-первых, что бы там кто не писал про паттерны, это субъективное мнение, которое не являетя истиной в последней инстанции. Во-вторых, паблик статик переменные доступны везде, т.к. для обращения к ним достаточно названия класса. -------------------- |
|||
|
||||
chipset |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
Конечно не является.. каждый делает так, как ему удобнее ![]() Мы лишь пытаемся выяснить чей вариант удобнее..
Паблик-статик переменные не являются синглетонами, по крайней мере по Александреску (а как кстати правильно писать?), поскольку ихнего типа может создаться ещё один обьект, что недопустимо для синглетона. Это сообщение отредактировал(а) chipset - 2.4.2005, 10:49 --------------------
|
||||||
|
|||||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 3 Всего: 172 |
Ох, ну опечатался - я имел в виду не только переменные, но и методы, точнее метод getInstance(), который вроде объявлен как статик... -------------------- |
|||
|
||||
np9mi7 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 553 Регистрация: 17.8.2003 Где: Volgograd, Russia Репутация: 5 Всего: 10 |
Ну, все нормально, экземпляр один ссылок много...
А layered architecture, это то что нужно, объект может пользоваться сервисом синглтона, но не иметь к нему больше некакого отношения... |
|||
|
||||
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
Ну пусть даже и так, но getInstance у тебя все равно возвращает null, т.е. геммороя с хранением линка не избежать. Это сообщение отредактировал(а) chipset - 2.4.2005, 11:02 --------------------
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |