Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [опрос]Паттерны проектирования 
:(
    Опции темы
 
Используете ли вы паттерны проектирования в своих программах?
Да [ 20 ]  [43.48%]
Нет [ 8 ]  [17.39%]
Нет, но хочу [ 10 ]  [21.74%]
Что это? [ 8 ]  [17.39%]
Всего проголосовавших: 46
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
np9mi7
Дата 31.3.2005, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: 5
Всего: 10



Цитата
Я вообще-то имел ввиду архитектурную часть, т.е. пишешь ли ты в проектной документации: так и так, это будет синглетоном, а это будет фабрикой.
, сейчас стараюсь писать (UML). так нагляднее, тем более тем программистам с которыми работаешь в комманде намного проще понять друг друга. Вообще патерны это дело очень хорошее действительно как средство общения + багаж готовых проектных решений для конкретной ситуации. Если вы занимаетесь коммандной разработкой то дело пойдет на много эфф. если иметь у себя под боком багаж проектных решений. Например у нас в отделе есть набор проектных решений специфичных для нашей области прикладного программирования. это очень удобно. вообще всем советую как то коллеционировать свои решения и их обобщать, это ведет к не изобретанию велосипеда. те же паттерны которые нам предлагают в книгах и статьях, это есть наиболее часто встречающиеся проблемы и их решения, так что я за образцы! тем более внутри комманды!


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
Hroft
Дата 31.3.2005, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 20.10.2003
Где: Москва

Репутация: нет
Всего: 3



np9mi7: золотые слова.

Жаль нету смайлика ОВАЦИЯ. Я бы уважаемому Гидранту их парочку вставил (в сообщении своем). Всегда приятно почитать посты умного и начитанного человека, изумительно начитанного, весьма грамотного, пусть даже малость не следящего за язычком...
PM MAIL ICQ   Вверх
Domestic Cat
Дата 31.3.2005, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 3
Всего: 172



Цитата
Жаль нету смайлика ОВАЦИЯ.


Попробуй линк "Показать всё" пod смайлами.


--------------------

PM   Вверх
chipset
Дата 31.3.2005, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 164



Цитата(Hroft @ 31.3.2005, 00:59)
Жаль нету смайлика ОВАЦИЯ.

Эт есть smile
--Resize_Images_Alt_Text--


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Hroft
Дата 1.4.2005, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 20.10.2003
Где: Москва

Репутация: нет
Всего: 3



Клево smile.
Гидрант: smile smile
Ну да хорош оффтопить.

Кстати, об Александреску. Loki пробовали пользовать? Как впечатления? Мне понравилось. Жаль только, что под разные компиляторы по-разному многие вещи делаются... Но это уже беда компиляторов.
PM MAIL ICQ   Вверх
Fire-Plug
Дата 2.4.2005, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 15.3.2005

Репутация: -1
Всего: 0



Пересмотрел полемику, чтобы понять с чего сыр-бор начался...
Цитата(Domestic @ 31.3.2005, 09:33)
Вообще-то зависит все от того, какой синглтон нужен. Можно на все запросы возвращать ссылку на один и тот же объект, можно дать доступ один раз, как в приведенном выше случае. Никаких иксепшнов тут не будет, если клиент попросил синглтон однажды.

Если объект нужен однажды, то не проще создать его обычным образом, прямо в том месте, где он будет использован, а не строить предложенную выше конструкцию с однократным доступом, к-рая только потребляет ресурсы? Конструкцию такого типа следует назвать "Собака на сене или Сам не гам и другому не дам"-синглтон.
Цитата(Domestic @ 31.3.2005, 09:33)

Чаще всего, если синглтон просят два раза - это сигнал бага в коде, потому лучше вернуть на такой запрос null или напрямую бросить иксепшн

Создается впечатление, что данная фраза - это в лучшем случае искреннее заблуждение.
В идее синглтона нет ничего даже близко похожего на процитированное утверждение. Как раз наоборот.
Обратимся к "классикам"
Цитата
1) GoF: "Гарантировать, что класс имеет только один экземляр и обеспечить глобальную точку доступа к нему"
2) Александреску: "Синглтон - это улучшенная глобальная переменная"... "Вам нужно использовать синглтон, когда вы моделируете типы, экземпляр к-рых концептуально должен быть уникальным в приложении, такие как Клавиатура, Дисплей, Сист. Часы..."

Улавливаете разницу - уникальный объект или однократный объект?
Синглтон разрабатывался для того, чтобы его чаще всего запрашивали много раз из разных мест в приложении.
Обратная ситауция, когда нужно гарантировать, что объект будет использован только однажды... Зачем такой одноразовый объект в памяти держать - его следует уничтожать сразу после использования, а не занимать пусть даже 4 байта под его статический указатель. Т.е. требуется другая реализация, не основанаая на принципах построения синглтона и, соотственно, другое название - этакий object unitary(однократный) - Unitarion.
Приведите примеры для такого Unitarion-а, имеющие приблизительно такой же вес, как и те, что привел Александреску.
--------------------
Объясни другому - поймешь сам (Народная примета)
PM MAIL   Вверх
Domestic Cat
Дата 2.4.2005, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 3
Всего: 172



Цитата(Fire @ 2.4.2005, 00:32)
Если объект нужен однажды, то не проще создать его обычным образом, прямо в том месте, где он будет использован,

А что значит "создать объект обычным образом"? Что, есть "необычное создание объекта"?

Цитата(Fire @ 2.4.2005, 00:32)
а не строить предложенную выше конструкцию с однократным доступом, к-рая только потребляет ресурсы?

Какие ресурсы??? Если такие ресурсы считать то нужно идти на асме писать...

Цитата(Fire @ 2.4.2005, 00:32)
Конструкцию такого типа следует назвать "Собака на сене или Сам не гам и другому не дам"-синглтон.


Вообще, ЧИТАЙ ВНИМАТЕЛЬНЕЕ - нигде у меня не написано, что объект нужен однажды. У меня написано, что "можно дать доступ один раз" и "попросил синглтон однажды."
Потому все дальнейшие рассуждения - непонятно к чему вообще:
Цитата(Fire @ 2.4.2005, 00:32)
Синглтон разрабатывался для того, чтобы его чаще всего запрашивали много раз из разных мест в приложении.
Обратная ситауция, когда нужно гарантировать, что объект будет использован только однажды... Зачем такой одноразовый объект в памяти держать - его следует уничтожать сразу после использования, а не занимать пусть даже 4 байта под его статический указатель. Т.е. требуется другая реализация, не основанаая на принципах построения синглтона и, соотственно, другое название - этакий object unitary(однократный) - Unitarion.
Приведите примеры для такого Unitarion-а, имеющие приблизительно такой же вес, как и те, что привел Александреску.

Посмотри внимательно на код, который я привел, и на то, что подразумевалось под словами "просят синглтон". "Просят" - значит вызывают метод getInstance, чтобы получить ссылку на уникальный объект. С этой ссылкой никто не мешает ничего делать - можешь хоть пятьдесят раз ее скопировать. Когда клиент вызывает этот метод, он ожидает, что уникальный объект будет создан. Потому, если метод вызван два раза, то в таком контексте это скорее будет означать баг.
Не вижу никаких противоречий ни с кем.


--------------------

PM   Вверх
chipset
Дата 2.4.2005, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 164



Цитата(Domestic @ 1.4.2005, 22:59)
С этой ссылкой никто не мешает ничего делать - можешь хоть пятьдесят раз ее скопировать. Когда клиент вызывает этот метод, он ожидает, что уникальный объект будет создан.

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

Это сообщение отредактировал(а) chipset - 2.4.2005, 10:15


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Domestic Cat
Дата 2.4.2005, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 3
Всего: 172



Цитата(chipset @ 2.4.2005, 01:14)
да и параметры можно передавать.


Опять не понял, а кто мешает передавать параметры:
Код

public Singleton getInstance(int parameter1, MyClass parameter2)
{
      return new Singleton(parameter1, parameter2);
}

private Singleton (int parameter1, MyClass parameter2)
{
      //...
}


Цитата(chipset @ 2.4.2005, 01:14)
Боюсь мороки с передачей ссылки будет.. Кроме того, если отойти от стандартного синглетона, и сделать функцию-конструктор

Синглтон не сделан раз и навсегда; делать его можно как хочешь, под твои нужды. Если многим классам нужна ссылка на объект синглтона, - пожалуйста, делай так. Но ИМО, чем большему количеству классов нужна ссылка, тем хуже дизайн. Недаром появилось понятие layered architecture - система разрабатывается слоями, чтобы уменьшить связи между классами. Чем больше классов завязаны на к-л объект, тем ригиднее такая структура, тем она хуже. В крайнем случае используется Медиатор, но лучше всего спроектировать так, чтобы синглтон был нужен одному классу.


--------------------

PM   Вверх
chipset
Дата 2.4.2005, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 164



Цитата(Domestic @ 1.4.2005, 23:23)
Но ИМО, чем большему количеству классов нужна ссылка, тем хуже дизайн.

Чтобы не быть голословным:
Цитата(Modern)
Шаблон гарантирует, что класс имеет только один экземпляр и обеспечивает глобальный доступ к нему.



--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Domestic Cat
Дата 2.4.2005, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 3
Всего: 172



Цитата
Шаблон гарантирует, что класс имеет только один экземпляр и обеспечивает глобальный доступ к нему.

Во-первых, что бы там кто не писал про паттерны, это субъективное мнение, которое не являетя истиной в последней инстанции.
Во-вторых, паблик статик переменные доступны везде, т.к. для обращения к ним достаточно названия класса.


--------------------

PM   Вверх
chipset
Дата 2.4.2005, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 164



Цитата(Domestic @ 1.4.2005, 23:44)
Во-первых, что бы там кто не писал про паттерны, это субъективное мнение, которое не являетя истиной в последней инстанции.

Конечно не является.. каждый делает так, как ему удобнее smile
Мы лишь пытаемся выяснить чей вариант удобнее..
Цитата(Domestic @ 1.4.2005, 23:44)
Во-вторых, паблик статик переменные доступны везде, т.к. для обращения к ним достаточно названия класса.

Паблик-статик переменные не являются синглетонами, по крайней мере по Александреску (а как кстати правильно писать?), поскольку ихнего типа может создаться ещё один обьект, что недопустимо для синглетона.

Это сообщение отредактировал(а) chipset - 2.4.2005, 10:49


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Domestic Cat
Дата 2.4.2005, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 3
Всего: 172



Цитата(chipset @ 2.4.2005, 01:48)
Паблик-статик переменные не являются синглетонами, по крайней мере по Александреску (а как кстати правильно писать?), поскольку ихнего типа может создаться ещё один обьект, что недопустимо для синглетона.

Ох, ну опечатался - я имел в виду не только переменные, но и методы, точнее метод getInstance(), который вроде объявлен как статик...


--------------------

PM   Вверх
np9mi7
Дата 2.4.2005, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: 5
Всего: 10



Ну, все нормально, экземпляр один ссылок много...

А layered architecture, это то что нужно, объект может пользоваться сервисом синглтона, но не иметь к нему больше некакого отношения...


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
chipset
Дата 2.4.2005, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 164



Цитата(Domestic @ 1.4.2005, 23:51)
Ох, ну опечатался - я имел в виду не только переменные, но и методы, точнее метод getInstance(), который вроде объявлен как статик...

Ну пусть даже и так, но getInstance у тебя все равно возвращает null, т.е. геммороя с хранением линка не избежать.

Это сообщение отредактировал(а) chipset - 2.4.2005, 11:02


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1072 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.