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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шаблоны проектирования 
:(
    Опции темы
FurryFreeman
Дата 29.5.2006, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Где можно на русском и доходчиво почитать про сабж?
Так сказать, шаблоны для чайников. smile 
PM MAIL   Вверх
MAKCim
Дата 29.5.2006, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Если про паттерны то, имхо, лучшая это книга "банды четырех"
GoF
Если шаблоны C++ то
Влиссидис и Джоссатис - "Шаблоны C++. Справочник разработчика" (но книга не для чайников) 

Это сообщение отредактировал(а) MAKCim - 29.5.2006, 21:11


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
DeadSoul
Дата 29.5.2006, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 2
Всего: 11



FurryFreeman, а поискать? Я про четыре книги расписывал в каком порядке их читать нужно. GOF - яно не лучшая для начала 


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
MAKCim
Дата 29.5.2006, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

GOF - яно не лучшая для начала 

зато почти что классика
и вообще, что значит для начала? Человек вообще не знаком с ООП? Тогда ему про паттерны вообще читать пока не надо. А если знаком, то все термины этой книги будут понятны (интерфейс, реализация, инстанцирование, объект, ...) и читать ее будет, имхо, не так уж и сложно. Зато там изложено все четко, лаконично, с примерами реальных приложений и т. д 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
DeadSoul
Дата 29.5.2006, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 2
Всего: 11



MAKCim, по GOF я не смог разобратся с паттерном "Мост". Эта книга неплоха в качестве справочника 


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
MAKCim
Дата 29.5.2006, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

Эта книга неплоха в качестве справочника

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

по GOF я не смог разобратся с паттерном "Мост"

В чем именно? 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
BreakPointMAN
Дата 29.5.2006, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 14
Всего: 24



FurryFreeman, прочитай эту тему от начала до конца: Паттерны проектирования, (книги, ресурсы, библиотеки) 


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
FurryFreeman
Дата 30.5.2006, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем спасибо, буду прокуривать. smile 
PM MAIL   Вверх
DeadSoul
Дата 30.5.2006, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 2
Всего: 11



Цитата(MAKCim @  29.5.2006,  22:04 Найти цитируемый пост)
Цитата
по GOF я не смог разобратся с паттерном "Мост"
В чем именно?  

Что означает в нем "отделение интерфеса от реализации" и т.д. Очень "сумбурно" написано.

P.S. Ссылку выдал хорошую
 


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
Earnest
Дата 31.5.2006, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Отделение интерфейса от реализации означает, что иерархия интерфейса строится "параллельно" иерархии реализации. Цель - дать возможность обеим иерархиям изменяться независимо, без взрывного роста количества классов, которое получилось бы при простом наследовании. В данном случае под реализацией подразумевается не полная реализация интерфейса, а какой-либо его части (которых может быть не одна). 
Не буду нарушать традицию и приведу пример иерархии графических фигур. Базовый класс IShape, производные классы IPoint, ICircle, IRect, etc... Обычно приводится пример реализации рисования, который может быть реализован с помощью разных библиотек, которые нужно уметь переключать... 
Но я приведу другой пример: способы хранения объектов в памяти. Проще всего представить себе контейнер умных указателей на базовый класс IShape. Но если объектов тыщи и мильоны, как-то начинает душить жаба... Даже загрузить все это счастье из файла - уже проблема (пока насоздаешь столько динамических объектов...). Тем более, когда понимаешь, что в динамическом виде эти объекты нафиг не нужны сразу все - реально-то пользователь интерактивной программы работает с несколькими. И за сеанс работы все тыщи явно не окучит. Но некоторые функции от всех объектов все же требуются: скажем, уметь рисоваться и отвечать на какие-нибудь запросы, не изменяющие их состояния. 
Отсюда приходим к идее: реализуем-ка объекты двумя способами: облегченная реализация, выполняющая только read-only запросы, и полная реализация. Облегченная реализация может быть сделана в виде оболочки над упакованной структурой, прочитанной из файла "большим куском" (т.е. не нуждающейся в конструкторе). А для полной потребуется честный динамический объект.
Если мы попробуем унаследовать обе реализации от наследников IShape, что кажется естественным... (не знаю, мне так не кажется, но в книгах пишут, что должно... smile ) ... Короче, классы начнут плодиться как тараканы. А если потребуется еще какой-нибудь тип хранения (ну не знаю, какой-нибудь удаленный доступ), то вообще впору застрелиться. Однако, построив отдельную иерархию реализаций (не наследуя от IShape), а просто храня в конкретном классе IShape указатель на реализацию, мы эту проблему красиво решим. Это и есть Мост. Правда, в моем примере используется еще и паттерн прокси, но это нормально - паттерны в чистом виде в программах редко водяться. 


--------------------
...
PM   Вверх
MAKCim
Дата 31.5.2006, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



исчерпывающий ответ  smile  


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

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


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Спасибо, MAKCim, за +. Сама горжусь.  smile  
Тем более учитывая, что когда то, что описано в примере, проектировалось, я еще книгу про паттерны не читала. И испытывала некоторые сомнения: дескать, во накручено. Но книга банды четырех все разложила по полочкам: и название этому, оказывается, есть, и еще покруче навороты встречаются. И вообще, любую проблему дизайна можно решить добавлением одной или нескольких прокладок...
Короче, к чему это я: паттерны проектирования начинаешь понимать и оценивать по заслугам только тогда, когда реально столкнешься с проблемами, которые они решают... 

Т.е., если кто не чувствует позвоночником, какая это ВЕЩЬ, не расстраивайтесь, просто примите к сведению. Даже применять не надо, если что-то кажется излишне навернутым. Но придет время, и вы наверняка столкнетесь с проблемой, не решаемой с помощью if-else... И вот тогда придет время паттернов... 


--------------------
...
PM   Вверх
DeadSoul
Дата 31.5.2006, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 2
Всего: 11



Earnest, спасибо, мне это уже бъяснять не надо. 


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
zabivator
Дата 14.9.2006, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Earnest @ 31.5.2006,  07:53)
Отделение интерфейса от реализации означает, что иерархия интерфейса строится "параллельно" иерархии реализации. Цель - дать возможность обеим иерархиям изменяться независимо, без взрывного роста количества классов, которое получилось бы при простом наследовании. В данном случае под реализацией подразумевается не полная реализация интерфейса, а какой-либо его части (которых может быть не одна). 
Не буду нарушать традицию и приведу пример иерархии графических фигур. Базовый класс IShape, производные классы IPoint, ICircle, IRect, etc... Обычно приводится пример реализации рисования, который может быть реализован с помощью разных библиотек, которые нужно уметь переключать... 
Но я приведу другой пример: способы хранения объектов в памяти. Проще всего представить себе контейнер умных указателей на базовый класс IShape. Но если объектов тыщи и мильоны, как-то начинает душить жаба... Даже загрузить все это счастье из файла - уже проблема (пока насоздаешь столько динамических объектов...). Тем более, когда понимаешь, что в динамическом виде эти объекты нафиг не нужны сразу все - реально-то пользователь интерактивной программы работает с несколькими. И за сеанс работы все тыщи явно не окучит. Но некоторые функции от всех объектов все же требуются: скажем, уметь рисоваться и отвечать на какие-нибудь запросы, не изменяющие их состояния. 
Отсюда приходим к идее: реализуем-ка объекты двумя способами: облегченная реализация, выполняющая только read-only запросы, и полная реализация. Облегченная реализация может быть сделана в виде оболочки над упакованной структурой, прочитанной из файла "большим куском" (т.е. не нуждающейся в конструкторе). А для полной потребуется честный динамический объект.
Если мы попробуем унаследовать обе реализации от наследников IShape, что кажется естественным... (не знаю, мне так не кажется, но в книгах пишут, что должно... smile ) ... Короче, классы начнут плодиться как тараканы. А если потребуется еще какой-нибудь тип хранения (ну не знаю, какой-нибудь удаленный доступ), то вообще впору застрелиться. Однако, построив отдельную иерархию реализаций (не наследуя от IShape), а просто храня в конкретном классе IShape указатель на реализацию, мы эту проблему красиво решим. Это и есть Мост. Правда, в моем примере используется еще и паттерн прокси, но это нормально - паттерны в чистом виде в программах редко водяться.

А можно поподробней и с рисунками? Уж очень интересно!
--------------------
#include <zabivator>int main( int, char * [] ){   while( Zabivator::жив() ) Zabivator::моск()++;   return 0;}
PM MAIL WWW ICQ   Вверх
MAKCim
Дата 14.9.2006, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

А можно поподробней и с рисунками? Уж очень интересно! 

Куда уж подробнее  smile 
Читай GoF


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0959 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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