Кто-то использовал паттерны (в частности — проектирования) при проектировании/разработке не очень сложных программ на С#/C++?
Вообще — насколько полезно/бесполезно их использование?
Поделитесь, пожалуйста,опытом, как Вы начали применять паттерны / какой был Ваш первый реализованный в программе патерн?
Спасибо.
09.08.05 19:14: Перенесено модератором из '.NET' — AndrewVK
Как бы вам так сказать.. В общем шаблоны это не библиотека компонент.. Это какие-то типовые решения, которые годами применяются множеством разработчиков. Зачастую при прочтении тех же GoF возникало deja vu: "ё-моё, я же это уже когда то реализовывал, там то и там то! так вот оказывается как оно называется.. а я то думал что изобрел это сам". Так что читать настоятельно рекомендуется, что бы не ломать голову над разработкой того что было уже давно придумано до вас.
Что до применения, то тут все довольно просто: если вы видите возможность применения какого то шаблона, и вам это решения кажется удачным — применяйте. Вроде еще никто не жаловался..
Здравствуйте, WildWildWind, Вы писали:
WWW>Привет!
WWW>Кто-то использовал паттерны (в частности — проектирования) при проектировании/разработке не очень сложных программ на С#/C++? WWW>Вообще — насколько полезно/бесполезно их использование? WWW>Поделитесь, пожалуйста,опытом, как Вы начали применять паттерны / какой был Ваш первый реализованный в программе патерн?
WWW>Спасибо.
Существует очень много design patterns...Могу привести примеры которые реально понадобились в моей работе
1) Паттерн Bridge — позволяет гибко отделить интерфейс от его реализации. Применяется даже в VS.NET IDE
2) Паттерн Abstract Factory — создание группы объектов на основе некоторых параметров.
3) Паттерн Provider Model — грубо говоря работа с источником данных независимо от его вида.
Более подробно — в инете море информации и примеров..
От себя скромно добавлю — паттерны очень полезная штука, если надо могу скинуть примеры кода который применялся в реальных приложениях.
WWW>Поделитесь, пожалуйста,опытом, как Вы начали применять паттерны / какой был Ваш первый реализованный в программе патерн?
В основном (почти в каждом проекте) использую Factory — для абстрагирования уровня данных и Strategy — часто для каких-то общих методов для бизнес-объектов (типа перевести DataSet в бизнес-объект).
Остальное (типа Command и т.п.) я не выделяю соответственно их названиям, они как-то сами собой естесственным образом появляются.
Вообще, паттерны с примерами и с индикатором "частота использования" неплохо описаны здесь:
Здравствуйте, WildWildWind, Вы писали:
WWW>Привет!
WWW>Кто-то использовал паттерны (в частности — проектирования) при проектировании/разработке не очень сложных программ на С#/C++? WWW>Вообще — насколько полезно/бесполезно их использование? WWW>Поделитесь, пожалуйста,опытом, как Вы начали применять паттерны / какой был Ваш первый реализованный в программе патерн?
WWW>Спасибо.
“Design patterns help you learn from others' successes instead of your own failures" (c)Thinking in Patterns by Bruce Eckel
Здравствуйте, WildWildWind, Вы писали:
WWW>А свои патерны кто-то писал?
А как же! Я, например
Только получается плохо
Схема с описанием не влезает в 21"-монитор, распечатывается на А0 и висит на стене взаместо обоев .
Жду вот когда придёт рефакторинг и всё поправит .
<< RSDN@Home 1.1.4 beta 7 rev. 500 >> =03:43= [Windows XP — 5.1.2600.0]
under «*none*»
Help will always be given at Hogwarts to those who ask for it.
Здравствуйте, _FRED_, Вы писали:
_FR>А как же! Я, например
_FR>Только получается плохо _FR>Схема с описанием не влезает в 21"-монитор, распечатывается на А0 и висит на стене взаместо обоев . _FR>Жду вот когда придёт рефакторинг и всё поправит .
А можете проказать свой шедевр (если не секрет)?
Просто очень интересно.
Здравствуйте, WildWildWind, Вы писали:
WWW>А свои патерны кто-то писал?
Просто насколько я понял — одно из преимуществ паттернов — делиться своими решениями с
другими программерами в доступной форме.
Может — кто-то пробовал оформлять свои решения в виде паттернов (не обязалельно — сложных)?
Или — это всё-таки в основном прерогативы учёныхмужей — а простым программерам нечего уши розвешивать
(в смысле — в основном учиться уму-разуму)?
Извините что повторяюсь.
Просто интересно увидеть — как реально работает технологя.
Здравствуйте, WildWildWind, Вы писали:
WWW>Здравствуйте, WildWildWind, Вы писали:
WWW>>А свои патерны кто-то писал?
WWW>Просто насколько я понял — одно из преимуществ паттернов — делиться своими решениями с WWW>другими программерами в доступной форме. WWW>Может — кто-то пробовал оформлять свои решения в виде паттернов (не обязалельно — сложных)? WWW>Или — это всё-таки в основном прерогативы учёныхмужей — а простым программерам нечего уши розвешивать WWW>(в смысле — в основном учиться уму-разуму)?
WWW>Извините что повторяюсь. WWW>Просто интересно увидеть — как реально работает технологя.
WWW>Cпасибо
Все верно, только есть одно НО — нужно что бы твой собеседник владел языком "паттернов". Если это условие выполняется, то, имхо,
гораздо проще донести свои идеи до собеседника.
А вообще, паттерны — The ABC of OOD
Здравствуйте, Dr.Gigabit, Вы писали:
DG>Все верно, только есть одно НО — нужно что бы твой собеседник владел языком "паттернов". Если это условие выполняется, то, имхо, DG>гораздо проще донести свои идеи до собеседника. DG>А вообще, паттерны — The ABC of OOD
Спасибо за ответ.
Можно ещё пару вопросов?
1) Есть ли такой ресурс, где бы все русскоязычные програмеры выкладывали свои решения в виде паттернов?
Если такового места нет — может завести его (например — как форум или проект RSDN)?
Нравится такая идея?
2) Как начать применять паттерны при условии что в целом это методология в конторе не юзается?
Плиз, поделитесь опытом.
Здравствуйте, WildWildWind, Вы писали:
WWW>Здравствуйте, Dr.Gigabit, Вы писали:
DG>>Все верно, только есть одно НО — нужно что бы твой собеседник владел языком "паттернов". Если это условие выполняется, то, имхо, DG>>гораздо проще донести свои идеи до собеседника. DG>>А вообще, паттерны — The ABC of OOD
WWW>Спасибо за ответ.
WWW>Можно ещё пару вопросов? WWW>1) Есть ли такой ресурс, где бы все русскоязычные програмеры выкладывали свои решения в виде паттернов? WWW>Если такового места нет — может завести его (например — как форум или проект RSDN)? WWW>Нравится такая идея?
Боюсь я, что если все русскоязычные программеры начнут выкладывать свои решения — то из общего числа от силы 0.5% сможет претендовать называться
паттерном.
WWW>2) Как начать применять паттерны при условии что в целом это методология в конторе не юзается? WWW>Плиз, поделитесь опытом.
Паттерны — понятие весьма растяжимое, скажем далеко не в каждой конторе применяют Enterprise Patterns, но если мы говорим о паттернах GoF — то это, как я писал уже, алфавит ООП, тот минимум, которым должен свободно владеть нормальный разработчик.
Я бы не стал называть паттерны методологией (если речь, конечно идет о паттернах GoF), и использование/неипользование их в вашей компании не накладывает на вас абсолютно никаких ограничений. Другое дело, что это уже немного говорит о квалификации разработчиков.
Так что совет тут может один: использовать, экспериментировать, ну и пытаться достичь той стадии, когда возникнет потребность изобретать что-то свое.
Здравствуйте, Dr.Gigabit, Вы писали:
DG>Здравствуйте, WildWildWind, Вы писали:
WWW>>Здравствуйте, Dr.Gigabit, Вы писали:
DG>>>Все верно, только есть одно НО — нужно что бы твой собеседник владел языком "паттернов". Если это условие выполняется, то, имхо, DG>>>гораздо проще донести свои идеи до собеседника. DG>>>А вообще, паттерны — The ABC of OOD
WWW>>Спасибо за ответ.
WWW>>Можно ещё пару вопросов? WWW>>1) Есть ли такой ресурс, где бы все русскоязычные програмеры выкладывали свои решения в виде паттернов? WWW>>Если такового места нет — может завести его (например — как форум или проект RSDN)? WWW>>Нравится такая идея? DG>Боюсь я, что если все русскоязычные программеры начнут выкладывать свои решения — то из общего числа от силы 0.5% сможет претендовать называться DG>паттерном.
WWW>>2) Как начать применять паттерны при условии что в целом это методология в конторе не юзается? WWW>>Плиз, поделитесь опытом. DG>Паттерны — понятие весьма растяжимое, скажем далеко не в каждой конторе применяют Enterprise Patterns, но если мы говорим о паттернах GoF — то это, как я писал уже, алфавит ООП, тот минимум, которым должен свободно владеть нормальный разработчик. DG>Я бы не стал называть паттерны методологией (если речь, конечно идет о паттернах GoF), и использование/неипользование их в вашей компании не накладывает на вас абсолютно никаких ограничений. Другое дело, что это уже немного говорит о квалификации разработчиков. DG>Так что совет тут может один: использовать, экспериментировать, ну и пытаться достичь той стадии, когда возникнет потребность изобретать что-то свое.
Здравствуйте, Dr.Gigabit, Вы писали:
DG>Боюсь я, что если все русскоязычные программеры начнут выкладывать свои решения — то из общего числа от силы 0.5% сможет претендовать называться DG>паттерном.
Ну тем не менее — если наберётся хоть с десяток паттернов — IMHO это будет очень хорошо
И кроме того — на этом ресурсе можно было бы обсудить создание и применеие паттернов.
Может — это будет интересно и поучительно.
Здравствуйте, WildWildWind, Вы писали:
WWW>Или — это всё-таки в основном прерогативы учёныхмужей — а простым программерам нечего уши розвешивать (в смысле — в основном учиться уму-разуму)?
Нет, никто их специально не придумывает — просто так получилось — в туалет все одинаково ведь ходят — тоже хороший паттерн! Так и здесь.
WWW>1) Есть ли такой ресурс, где бы все русскоязычные програмеры выкладывали свои решения в виде паттернов? WWW>Если такового места нет — может завести его (например — как форум или проект RSDN)? WWW>Нравится такая идея?
Есть англоязычный: http://www.patternshare.org/
WWW>2) Как начать применять паттерны при условии что в целом это методология в конторе не юзается?
Паттерны проектирования (не Enterprise) — это паттерны зачастую под конкретную задачу, а не на все приложение. Примени что-нибудь удачно, народ подтянется Так было в нескольких проектах, в которых я учавствовал — сгенерировал идею, народ понял и подхватил.
...Ei incumbit probatio, qui dicit, non qui negat...
Здравствуйте, WildWildWind, Вы писали:
WWW>Кто-то использовал паттерны (в частности — проектирования) при проектировании/разработке не очень сложных программ на С#/C++? WWW>Вообще — насколько полезно/бесполезно их использование? WWW>Поделитесь, пожалуйста,опытом, как Вы начали применять паттерны / какой был Ваш первый реализованный в программе патерн?
На третьем ходу выяснилось, что гроссмейстер играет восемнадцать испанских партий. В остальных двенадцати черные применили хотя и устаревшую, но довольно верную защиту Филидора. Если б Остап узнал, что он играет такие мудреные партии и сталкивается с такой испытанной защитой, он крайне бы удивился.
Ильф и Петров, "Двенадцать стульев"
Я сначала начал применять, а потом узнал, что это называются паттерны. Честно говоря не понял постановку вопроса. Все таки желательно идти не от паттернов к задаче, а наоборот, от задачи к паттернам. И вообще, не стоит делать паттерны как самоцель.
Суть в том, что часто паттерны используются чересчур активно. Известна история о программисте, который, прочитав в первый раз книгу Банды Четырех, ухитрился использовать 16 паттернов в 32 строчках кода. Помню замечательный вечер, подогретый всего-навсего одним стаканчиком солода, когда мы с Кентом набрасывали статью под названием "Не паттерны проектирования: 23 дешевых трюка", где рассказали о таких вещах, как использование оператора "if" вместо паттерна "стратегия". В каждой шутке есть доля правды. Паттерны нередко используются там, где без них вполне можно было бы обойтись, однако это не делает хуже саму идею. Весь вопрос в том, как вы их используете.
_>Есть англоязычный: _>http://www.patternshare.org/
Спасибо!
Это именно ОНО.
И всё ж таки — может что-то своё забабахаем?
_>Паттерны проектирования (не Enterprise) — это паттерны зачастую под конкретную задачу,
Конечно.
Но ведь задачи часто повторяются.
IMHO....
_> а не на все приложение. Примени что-нибудь удачно, народ подтянется Так было в нескольких проектах, в которых _>я учавствовал — сгенерировал идею, народ понял и подхватил.
Спасибо.
Если не сложно (только если не сложно) — поделитесь решениями.
Интересно.