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

Поиск:

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


Эксперт
****


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

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



Цитата(Domestic @ 2.4.2005, 09:44)
Чипсет, иметь один логгер плохо, потому, что это плохо smile

Логично smile
Ок, но зачем тебе два класса Keyboard, Display? smile


--------------------
Цитата(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
Дата 3.4.2005, 05:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(chipset @ 2.4.2005, 20:30)
Ок, но зачем тебе два класса Keyboard, Display? smile

А мне они триста лет не надо smile
Что ты хочешь сказать?


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

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


Эксперт
****


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

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



Цитата(Domestic @ 2.4.2005, 18:41)
Что ты хочешь сказать?

Я хочу сказать что одни разработчики вменяют в понятие синглетона одно, другие разработчики другое.. Твой синглетон совсем не соответствует Александреску, потом как он не глобален, зато он соответствует GoF.
Покажи мне плз причину плохости Александресковской архитектуры.

Это сообщение отредактировал(а) chipset - 3.4.2005, 05:48


--------------------
Цитата(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
Дата 3.4.2005, 05:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(chipset @ 2.4.2005, 20:47)
Я хочу сказать что одни разработчики вменяют в понятие синглетона одно, другие разработчики другое.. Твой синглетон совсем не соответствует Александреску, потом как он не глобален, зато он соответствует GoF.
Покажи мне плз причину плохости Александресковской архитектуры.


Цитата(Domestic @ 2.4.2005, 01:23)
Синглтон не сделан раз и навсегда; делать его можно как хочешь, под твои нужды. Если многим классам нужна ссылка на объект синглтона, - пожалуйста, делай так.




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

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


Эксперт
****


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

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



Я всё понимаю smile
Мне просто хочется узнать, почему ты делаешь именно так, и какие преимущества Гофовского синглетона.


--------------------
Цитата(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
Дата 3.4.2005, 06:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Ну вот например ты пишешь менеджер, управляющий очередью тредов, которым нужен доступ к неким ресурсам. При этом я знаю, что в своем коде я буду иобращаться к методу getInstance только один раз (до вызова dispose). Тогда возврат нула или выброс иксепшна, как в приведенном варианте, сразу жа будет сигнализировать об ошибке - кто-то попытался вызвать getInstance два раза до вызова dispose. Вот и все. Нужно это не во всех ситуациях, конечно.


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

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


Эксперт
****


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

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



Обьясни чем смертельно что:

Цитата(Domestic @ 2.4.2005, 19:00)
кто-то попытался вызвать getInstance два раза до вызова dispose.

Гораздо безгемморойнее получать инстанс отовсюду чем переносить его как лишний параметр через функцию.


--------------------
Цитата(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
Дата 3.4.2005, 06:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(chipset @ 2.4.2005, 21:09)
Гораздо безгемморойнее получать инстанс отовсюду чем переносить его как лишний параметр через функцию.


Да я его никуда и передавать не буду. Я спроектирую код так, что этот синглтон будет нужен одному единственному классу, в котором сохраню ссылку как поле.


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

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


Эксперт
****


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

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



Итак, у нас есть два варианта:
1) Пусть синглетон кто хочет во всем приложении тот и получает.
2) Доступ к синглетону имеет только один(два, три, четыре, неважно) избранный класс который его и допрашивает.
Вероятно, что в первом варианте имеют место быть полностью глобальные классы, такие как: Application, Keyboard, Game, при этом очень высока вероятность того что придет В. Пупкин и напишет ещё десяток классов которые будут заюзывать переменные и функции расположенные в этих классах.
Во-втором варианте, вероятно что более подходят классы к которым обращаются только определенное (постоянное!) количество классов, такие как: Logger, чё там ещё?
Опять-же, всё зависит полностью от архитектуры приложения.
Насчёт архитектуры приложения у меня вопросов больше нету, всё говорит нелюбовь к глобальным переменным.
Agreed?


--------------------
Цитата(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
Дата 3.4.2005, 06:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Я бы скорее сказал так.
Случай 1 (когда getInstance возвращает ссылку всегда) весьма напоминает (интерфейсом) другие паттерны, ту же фабрику, стейт или стратегию. В Java например, абстрактный класс NumberFormat имеет такие методы, которые тем не менее, возвращают ссылку не на синглтон, а ссылки на новые объекты класса DecimalFormat; и это далеко не единственный случай. Потому сам по себе интерфейс синглтона нисколько не говорит о том, что он синглтон. Программер Петя может, взглянув на паблик методы такого класса, пользоваться getInstance как обычным методом-фабрикой, считая, что он с каждым вызовом создает новый объект.
Тогда в рантайме что будет проишодить, неясно - зависит от самого синглтона и от кода Пети. Возможно, тем самым он введет баг, который выловить будет очень сложно, так как ошибка логическая.
Во втором варианте, возвращающем нул или бросающем иксепшн, такого не произойдет, ибо Петя сразу же получит скажем, иксепшн "Singleton method getInstance can be called only once".

Поэтому, пользоваться первым вариантом можно, если то, что думает Петя о синглтоне (считает, что это обычный класс или нет), неважно. Тот же простой логгер, реализованный как синглтон, вполне сработает в обеих случаях.


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

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


Эксперт
****


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

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



Цитата(Domestic @ 2.4.2005, 19:43)
Потому сам по себе интерфейс синглтона нисколько не говорит о том, что он синглтон.

Защищеный конструктор+метод instance применяется в других паттернах?



--------------------
Цитата(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
Дата 3.4.2005, 07:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(chipset @ 2.4.2005, 22:01)
Защищеный конструктор+метод instance применяется в других паттернах?

А если класс абстрактный ? ;)


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

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


Эксперт
****


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

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



Цитата(Domestic @ 2.4.2005, 20:05)
А если класс абстрактный ? ;)

Класс считается абстрактным если у него есть хоть одна виртуальная функция (в С++), поэтому причем тут защищеный конструктор я не догоню smile


--------------------
Цитата(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
Дата 3.4.2005, 07:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(chipset @ 2.4.2005, 22:14)
Класс считается абстрактным если у него есть хоть одна виртуальная функция (в С++), поэтому причем тут защищеный конструктор я не догоню smile


Дык я в курсе. Просто все равно ведь может быть конструктор, даже у абстрактного класса. Кстати, тогда его делают чаще всего протектед, чтобы сабклассы моглу к нему обратиться. Такшта похоже весьма.


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

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


Эксперт
****


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

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



Цитата(Domestic @ 2.4.2005, 20:19)
Кстати, тогда его делают чаще всего протектед, чтобы сабклассы моглу к нему обратиться.

А зачем его вообще прятать? Класс то все равно не создастся..


--------------------
Цитата(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

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


 




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


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

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