crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Обсуждение шаблонов (patterns) проектирования, отделено от темы "Литература по патернам проектирования"
LE0N
  опции профиля:
сообщение 3.4.2009, 20:42
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 10.3.2009
Из: Беларусь
Пользователь №: 604

Спасибо сказали: 0 раз(а)




Репутация:   0  


+1 тоже есть эта книжка.В электронном формате. Но, на мой взгляд, не стоит их использовать. (Архитектура при не правильном использовании станет трудно поддаваемая рефакторингу)
С опытом, к ним придёшь сам. А пока - изобретай велосипеды....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
2 страниц V   1 2 >  
Начать новую тему
Ответов (1 - 15)
Влад
  опции профиля:
сообщение 3.4.2009, 21:05
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 146
Регистрация: 20.3.2009
Из: Санкт-Петербург
Пользователь №: 627

Спасибо сказали: 46 раз(а)




Репутация:   8  


Знать, что такое паттерны проектирования, и представлять себе некоторые самые распространенные (не обязательно все!) паттерны и их применение - полезно, поскольку сберегает время при решении типовых задач проектирования.
Но! - не стоит абсолютизировать оные паттерны и приплетать их к месту и не к месту. Иначе, рискуешь ненароком оказаться в роли господина Журдена, который с превеликим удивлением узнал, что вот уже сорок лет говорит прозой :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 3.4.2009, 23:14
Сообщение #3


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

Спасибо сказали: 21 раз(а)




Репутация:   6  


Цитата(LE0N @ 3.4.2009, 21:42) *
+1 тоже есть эта книжка.В электронном формате. Но, на мой взгляд, не стоит их использовать. (Архитектура при не правильном использовании станет трудно поддаваемая рефакторингу)
С опытом, к ним придёшь сам. А пока - изобретай велосипеды....

у меня другие ощущения и опыт.
после изучения патернов стало легче понимать чужой код, легче принимать решения по архитектуре
и что уж совсем приятно и удивительно, стал меньше переписывать собственные "поделки".
отсюда вывод: мало их знать, нужно уметь применять...
и потом, паттерны - это наш профессиональный сленг. вместо того чтобы битый час объяснять что и
зачем легче сослаться на патерн и если собеседник шарит, сразу поймет че к чему.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 4.4.2009, 6:23
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(trdm @ 4.4.2009, 3:14) *
после изучения патернов стало легче понимать чужой код
полностью солидарен.

А насчет того, что Шаблоны (зачем транслит я не понял) проектирования не панацея, дак это с первых страниц книги говорится и еще несколько раз в ней вспоминается в разных главах.

Цитата(AD @ 3.4.2009, 20:20) *
Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж.- "Приемы объектно-ориентированного проектирования.
Эта книга хороша в первую очередь примерами из жизни, т.е. какой шаблон в какой программе применялся.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
LE0N
  опции профиля:
сообщение 5.4.2009, 23:05
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 10.3.2009
Из: Беларусь
Пользователь №: 604

Спасибо сказали: 0 раз(а)




Репутация:   0  


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

Объём этих "поделок" какой ?
В 99% лучше обойтись делегированием чем теми же синглтонами. Гибкость кода становится лучше в разы.
По поводу фабрик - так не читая про паттерны можно без проблем к ним придти. Ну а про обзерверы и прочую байду вообще речи быть не должно. Самые первые вещи, которые получаются при определённых заданиях.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.4.2009, 23:28
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(LE0N @ 6.4.2009, 3:05) *
лучше обойтись делегированием чем теми же синглтонами
помоему одно с другим как-то не вяжется.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 6.4.2009, 0:13
Сообщение #7


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

Спасибо сказали: 21 раз(а)




Репутация:   6  


Цитата(LE0N @ 6.4.2009, 0:05) *
Цитата
у меня другие ощущения и опыт.
после изучения патернов стало легче понимать чужой код, легче принимать решения по архитектуре
и что уж совсем приятно и удивительно, стал меньше переписывать собственные "поделки".

Объём этих "поделок" какой ?
В 99% лучше обойтись делегированием чем теми же синглтонами. Гибкость кода становится лучше в разы.
По поводу фабрик - так не читая про паттерны можно без проблем к ним придти. Ну а про обзерверы и прочую байду вообще речи быть не должно. Самые первые вещи, которые получаются при определённых заданиях.

твое фанфаронство уже не развлекает, а раздражает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 6.4.2009, 8:34
Сообщение #8


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(LE0N @ 6.4.2009, 0:05) *
В 99% лучше обойтись делегированием чем теми же синглтонами.
Приведи код, который может помочь обойтись в 99% случаев без синглтонов. :)

Цитата(trdm @ 6.4.2009, 1:13) *
твое фанфаронство уже не развлекает, а раздражает.
Спокойней нужно быть. ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
LE0N
  опции профиля:
сообщение 6.4.2009, 18:05
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 10.3.2009
Из: Беларусь
Пользователь №: 604

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата
твое фанфаронство уже не развлекает, а раздражает.

Слив засчитан.
Цитата
Приведи код, который может помочь обойтись в 99% случаев без синглтонов.

А зачем? У синглтона есть один огромный недостаток - если захотелось заменить класс, который используется на данный момент, нужно менять либо сам синглтон, либо лезть в класс его использующий и заменять точку входа. (Теряется такая важная вещь в ООП как полиморфмизм)
И проектировщик системы не может гарантировать того, что наследование там не нужно на 100%.
Ещё я бы посоветывал почитать про "антипаттерны"....
Цитата
помоему одно с другим как-то не вяжется.

Почему это не вяжется?
Всё просто - вместо singleton::get_instance(), передавать в тот же конструктор класса, его использующего ссылку на данный объект.
Когда я перестал юзать синглтоны, у меня сильно возросла реюзабельность кода.
На мой взгляд, синглтон - это стремление к функциональному программированию. ООП здесь даже и не пахнет. Всё, что в нём осталось от ООП - это инкапсуляция.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 6.4.2009, 18:15
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(LE0N @ 6.4.2009, 22:05) *
Почему это не вяжется?
Всё просто - вместо singleton::get_instance(), передавать в тот же конструктор класса, его использующего ссылку на данный объект.
однако делегирование и передача ссылки/указателя не одно и тоже.
Что же касается использования ссылки на объект вместо "Одиночки". Я тоже так пологал, пока не попробовал работать с "Одиночкой".
На практике оказалось удобнее использовать "Одиночку"

Подобная вещь используется и в Qt - QSqlDatabse - подобен "Именованному Одиночке"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
LE0N
  опции профиля:
сообщение 6.4.2009, 21:01
Сообщение #11


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 10.3.2009
Из: Беларусь
Пользователь №: 604

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата
Я тоже так пологал, пока не попробовал работать с "Одиночкой".

А я с ним работал в течение года. Теперь вот плююсь....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 7.4.2009, 8:41
Сообщение #12


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(LE0N @ 6.4.2009, 19:05) *
А зачем? У синглтона есть один огромный недостаток - если захотелось заменить класс, который используется на данный момент, нужно менять либо сам синглтон, либо лезть в класс его использующий и заменять точку входа. (Теряется такая важная вещь в ООП как полиморфмизм)
Думаю если так, тогда что-то у вас не так с планированием! :)

Например есть у нас классы:
Пример
class CSingleton
{
private:
   CSingleton *m_p;

private:
   CSingleton
   virtual ~CSingleton
   CSingleton( CSingleton &r)
   CSingleton &operator=( CSingleton &r)

public:
   static CSingleton *Init();
   static void destroy();
};

class CSessionManager: public CSingleton
{
   // ...
};
LE0N, может быть я что-то не понимаю, но в каком случае нужно будет и что менять?

Сообщение отредактировал ViGOur - 7.4.2009, 8:42
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
LE0N
  опции профиля:
сообщение 7.4.2009, 17:21
Сообщение #13


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 10.3.2009
Из: Беларусь
Пользователь №: 604

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата
LE0N, может быть я что-то не понимаю, но в каком случае нужно будет и что менять?

Ну вот захочу я, например, хранить сессии не в файле, а в БД (общая база в локалке).
А механизм с файлами будет использоваться ещё в одном месте - т.к. функционал сессионМенеджера полностью подходит.
Задача, конечно, притянута за уши, но, я думаю, суть понятна...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 7.4.2009, 17:33
Сообщение #14


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Это точно, что задача притянута, в приведенной тобой задаче это реализуется таким путем:
class CStore {};
class CStoreFile  : public CStore {};
class CStoreBd   : public CStore {};

В CSessionManager используется указатель на CStore, ну и за счет полиморфизма сохраняется или туда или туда.
:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
LE0N
  опции профиля:
сообщение 7.4.2009, 21:58
Сообщение #15


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 10.3.2009
Из: Беларусь
Пользователь №: 604

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата
или туда или туда.

Имелось ввиду, что код, который ты собираешься модифицировать, уже написан и везде использован один экземпляр класса.
А модификация нужна для рефакторинга, либо для масштабирования своего проекта.
Подумай на досуге.... Нужен ли тебе такой плюс вместо пары строк копи-паста...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 7.4.2009, 22:56
Сообщение #16


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Не совсем понял, что имеется ввиду. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 4.5.2025, 17:17