Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2011, 09:58   #1
FiloXSee
Пользователь
 
Регистрация: 07.06.2011
Сообщений: 28
По умолчанию Паттерн Singleton против функционального подхода

Написал статью про сравнение функционального подхода с паттерном "Синглетон". Две ее части можно прочитать тут:

http://itw66.ru/blog/c_plus_plus/65.html
http://itw66.ru/blog/c_plus_plus/71.html

А вы как считаете, какой подход лучше?
Портал "It Works" (http://itw66.ru), на котором веду множество блогов по программированию и философии (FiloXSee).
FiloXSee вне форума Ответить с цитированием
Старый 07.06.2011, 11:37   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

СПАМ о своих статьях в http://programmersforum.ru/forumdisplay.php?f=24
p51x вне форума Ответить с цитированием
Старый 20.06.2011, 09:04   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Куча теории. Укажите в своей статье реальное практическое применение Ваших изысканий. Не синтетическую ситуацию, а вот применительно к какой-нибудь бухгалтерской программе . Вот нафига козе боян?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 14.07.2011, 12:50   #4
FiloXSee
Пользователь
 
Регистрация: 07.06.2011
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Куча теории. Укажите в своей статье реальное практическое применение Ваших изысканий. Не синтетическую ситуацию, а вот применительно к какой-нибудь бухгалтерской программе . Вот нафига козе боян?
Сложный вопрос - нафига? Это к вопросу о том, пользуешься ты паттернами при написание кода или всегда изобретаешь велосипед. Лично я довольно интенсивно пользовался синглетонами, когда мне нужно было создать какую-то систему. Синглетон кажется хорошим средством для создания функций, к которым можно отовсюду получить доступ... Однако есть и важные недостатки. Когда я их осознал и переосмыслил этот паттерн, то отказался от его использования в С++. Эти статьи - это объяснение лучшего подхода для достижения целей. И там не сильно синтетический код.. просто имена вымышленные и выкинуто все, что не относится к теме.
Портал "It Works" (http://itw66.ru), на котором веду множество блогов по программированию и философии (FiloXSee).
FiloXSee вне форума Ответить с цитированием
Старый 14.07.2011, 13:11   #5
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

1. Совершенно не затронута тема многопоточности, где из-за обилия блокировок проявляются большие проблемы синглтона, как замены глобальным переменным (хотя, альтернатива так же этим будет страдать). Современная программа и без многопоточности?
2. Какие-то сомнительные минусы в виде небольших дополнительных затрат на разыменовывание и вообще никаких плюсов и минусов предлагаемой замены.
3.
Цитата:
Кроме того, внешнему миру дается только то, что ему нужно, а все детали реализации, внутренние константы (такие как ARRAY_SIZE), внутренние переменные, внутренние структуры будут определяться только в одном файле (*.cpp) и при их изменение будет перекомпилирован только один файл.
Тут появляется сомнение по поводу знания автором ООП и любой синглтон всё то же самое легко предоставит.
4. Не раскрыта тема управления памятью в аналоге. Кто-то где-то ручками должен вызвать метод Create, а потом Destroy?

В общем, однобокая статья, которая обгаживает синглтон и совершенно не раскрывает темы аналога.
pu4koff вне форума Ответить с цитированием
Старый 25.07.2011, 15:33   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Цитата:
Сообщение от FiloXSee Посмотреть сообщение
Сложный вопрос - нафига? Это к вопросу о том, пользуешься ты паттернами при написание кода или всегда изобретаешь велосипед. Лично я довольно интенсивно пользовался синглетонами, когда мне нужно было создать какую-то систему. Синглетон кажется хорошим средством для создания функций, к которым можно отовсюду получить доступ... Однако есть и важные недостатки. Когда я их осознал и переосмыслил этот паттерн, то отказался от его использования в С++. Эти статьи - это объяснение лучшего подхода для достижения целей. И там не сильно синтетический код.. просто имена вымышленные и выкинуто все, что не относится к теме.
То есть реального примера применения не имеется?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 27.07.2011, 00:49   #7
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
1. Совершенно не затронута тема многопоточности, где из-за обилия блокировок проявляются большие проблемы синглтона, как замены глобальным переменным (хотя, альтернатива так же этим будет страдать).
Нет там проблем. Читай статью Саттера+Александреску, а дальше смотри на DCLP + run_once.

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Современная программа и без многопоточности?
Да. И? Многопоточность без явной необходимости - зло.

Применение синглтона оправдано только в редких случаях. Куда ни попадя его лепят только начинающие разработчики, которые совсем недавно узнали, что есть такая вещь как паттерн и которые не представляют всех сложностей промышленного программирования.
still_alive вне форума Ответить с цитированием
Старый 27.07.2011, 00:53   #8
alex_x_x
Форумчанин
 
Регистрация: 31.01.2011
Сообщений: 160
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
То есть реального примера применения не имеется?
так или иначе они существуют, да
alex_x_x вне форума Ответить с цитированием
Старый 27.07.2011, 07:22   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Цитата:
Сообщение от alex_x_x Посмотреть сообщение
так или иначе они существуют, да
Логично . Но только речь идет применительно к статье.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 31.07.2011, 11:52   #10
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Цитата:
Сообщение от still_alive Посмотреть сообщение
Нет там проблем.
Ага. Только получение экземпляра синглтона наверняка будет обёрнута в блокировку, т.е. на каждый чих потоки будут захватывать экземпляр себе.
Цитата:
Сообщение от still_alive Посмотреть сообщение
а дальше смотри на DCLP + run_once.
А теперь пожалуйста расшифровку что сие такое есть
Цитата:
Сообщение от still_alive Посмотреть сообщение
Да. И? Многопоточность без явной необходимости - зло.
Современные программы обычно идут с GUI. Вешать GUI из-за проведения каких-то расчетов - есть еще большее зло. Учитывая особенности синглтона и его типичное использование, не получится его использовать как, например, подключения к БД. Частенько же для облегчения жизни просто в каждом потоке используется своё подключение к БД, но с синглтоном такое уже не прокатит.
Цитата:
Сообщение от still_alive Посмотреть сообщение
Применение синглтона оправдано только в редких случаях. Куда ни попадя его лепят только начинающие разработчики, которые совсем недавно узнали, что есть такая вещь как паттерн и которые не представляют всех сложностей промышленного программирования.
Это касается всех паттернов, а еще ранее это касается и ООП в целом.
Я бы вообще паттерны перевёл не как "шаблоны проектирования", а как "образцы/примеры проектирования". Паттерны - это вовсе не рекомендация к действию, а просто примеры решения типовых задач.
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Singleton Selestis Общие вопросы Delphi 5 05.06.2011 13:38
Паттерн Service Layer (Сервисный уровень) ВаликАматор Общие вопросы C/C++ 0 27.02.2011 11:37
паттерн singleton zhenya.ya Общие вопросы C/C++ 1 26.11.2010 03:11
Паттерн MVP Vistar Общие вопросы .NET 0 11.09.2010 18:45
Пример использования эвристического и строгого подхода. Молодая Помощь студентам 1 26.05.2010 22:25