Я сбит с толку новичок и программист-любитель, пытающийся разобраться в этом, так что простите меня, если мой вопрос немного ошибочен или не имеет большого смысла.
Я вижу много вопросов по SO, связанных с использованием шаблонов проектирования, и мне интересно, есть ли у кого-нибудь хорошие ресурсы для изучения и реализации шаблонов проектирования? Я понимаю общую идею и знаю, как / когда использовать пару из них (синглтоны, фабричные методы), но я знаю, что упускаю.
(На всякий случай, я предпочитаю C #, но я могу учиться на примерах на других языках)
источник
Паттерны проектирования хороши по разным причинам:
Но когда ваша цель - просто изучить шаблоны дизайна, я думаю, вам не хватает основ. Все шаблоны проектирования основаны на более общих принципах. Высокая когезия, низкая связь, открытый и закрытый принцип, DRY, принцип замещения Лискова и т. Д. По этим основам я бы прочитал следующие книги в указанном порядке:
После этого вы готовы к базовой группе из четырех шаблонов проектирования.
Следующий шаг:
И всегда помните: выкройка - это не цель!
источник
Я бы добавил, что книга « Шаблоны проектирования» из «Банды четырех» - это библия для всех, кто серьезно интересуется шаблонами проектирования.
источник
Мой совет:
Читайте много о паттернах из разных источников.
Попытка навязать как можно больше шаблонов во всем коде, который вы пишете, не даст хороших результатов. Вместо этого позвольте информации некоторое время отдыхать в вашем мозгу (читайте: месяцы).
Внезапно вы обнаружите, что наткнулись на проблему или фрагмент кода, и вы смутно вспомните, что видели что-то, что могло бы работать как решение этой конкретной проблемы. Пришло время изучить детали шаблона, о котором вы думаете, и попытаться применить его.
Во всяком случае, это то, что у меня сработало.
источник
Шаблоны проектирования
Этот учебный сайт содержит следующие подразделы
Этот сайт также содержит руководство по антипаттернам , UML и рефакторингу .
источник
У Брюса Экеля есть книга по шаблонам проектирования , хотя это Java, как и все его книги, потрясающе. И что самое лучшее, они бесплатные!
источник
C # 3.0 Design Patterns для точки зрения C # на шаблоны проектирования.
(источник: oreilly.com )
источник
Вводная книга, которую я нашел полезной и хорошо написанной, - это Design Patterns Explained Аланом Шеллоуэем и Джеймсом Троттом (Аддисон Уэсли).
Как не начать с Банды Четырех книги, ибо это не вводная книга любыми средствами.
источник
Я бы порекомендовал взглянуть на квинтологию (?) Жана Поля Будху о демистификации шаблонов дизайна на DNRtv, URL-адреса приведены ниже. Видеопередачи затрагивают, среди прочего, Синглтона, Абстрактную фабрику, с той лишь разницей, что вы можете наблюдать, как он пишет, пока он обсуждает теорию. Приятно присмотреть за обедом в дождливый будний день.
http://www.dnrtv.com/default.aspx?showNum=63 http://www.dnrtv.com/default.aspx?showNum=65 http://www.dnrtv.com/default.aspx?showNum= 68 http://www.dnrtv.com/default.aspx?showNum=71 http://www.dnrtv.com/default.aspx?showNum=92
источник
Аннотация к приведенным выше комментариям.
Краткий справочник по шаблонам GOF
Вот хорошее место, где вы можете начать dofactory.com/patterns/patterns.aspx - вы можете найти ссылку на каждый шаблон вместе с соответствующими реализациями.
Однако помните, что это шаблоны GOF. Возможно, вам также понадобится прочитать и понять расширенные шаблоны, когда вы приобретете достаточно опыта в OOAD. Шаблоны проектирования Head First Design Patterns - хорошее начало, и после некоторого прогресса перейдите к шаблонам архитектуры корпоративных приложений Мартина Фаулера.
Применение шаблонов дизайна - процесс мышления
Еще один важный аспект - применение шаблонов дизайна так же важно, как и их знание. Чтение этих статей также может вам помочь.
Применение паттернов дизайна, часть I
Применение паттернов дизайна, часть 2
Надеюсь это поможет
источник
Шаблоны проектирования Head First Design Patterns хорош, как и другие уже отмеченные. Помимо этого, конечно же, оригинальная книга и C # Design Patterns. Также уже упоминались хорошие сайты.
Помимо самообучения, я серьезно рекомендую начать или посещать группу по изучению шаблонов в вашем районе. См. «Учебное руководство по шаблонам проектирования» для объяснения и прекрасного порядка изучения шаблонов. Мы сделали это, и я могу честно сказать, что я бы не понял так много, как сейчас. Еженедельные встречи с другими заинтересованными людьми на удивление дисциплинируют вас при изучении чего-то абстрактного, например, шаблонов проектирования.
Удачной учебы!
источник
Прежде чем тратить деньги на книги, я бы порекомендовал отличную страницу шаблонов дизайна Википедии . Также поищите в Google что-то другое по запросу "шаблоны дизайна" или выполните поиск по запросу "шаблоны дизайна" на YouTube. . Представление одной и той же информации по-разному часто помогает упасть.
Книга « Банда четырех» - это исчерпывающий текст по наиболее известным шаблонам, но ее не так легко читать, а примеры на C ++ нравятся не всем.
Текст Head First Design Patterns гораздо более доступен, но содержит только подмножество шаблонов Gang of Four.
Самое главное - понять, где и почему полезен тот или иной паттерн. После этого поищите в Интернете примеры реализации на выбранном вами языке и экспериментируйте, пока не получите его. Разберитесь с одним паттерном, прежде чем переходить к следующему. Все понимают одни закономерности лучше, чем другие (а существуют сотни менее известных).
Просто продолжай подключаться.
источник
(Источник: Amazon )
источник
Паттерны архитектуры корпоративных приложений (в твердом переплете) Мартина Фаулера
Рефакторинг под шаблоны (твердый переплет) Джошуа Кериевски
Непрерывная интеграция: повышение качества программного обеспечения и снижение риска (мягкая обложка) Пол Дюваль и др.
За пределами архитектуры программного обеспечения: создание и поддержка успешных решений (мягкая обложка) Люка Хоманна
источник
Шаблоны проектирования похожи на любую библиотечную функцию, прочтите о них, и тогда, когда возникнет проблема, шаблон проектирования будет в вашем «Toolchest». Есть много книг по шаблонам дизайна, все они созданы по образцам оригинальных шаблонов дизайна "Банды четырех".
Я думаю, что для любых программистов это и книга Фаулера по рефакторингу являются минимальными требованиями.
источник
Для веб-сайтов очень хороший сайт http://ajaxpatterns.org от одного из разработчиков веб-сайта ajaxian.
источник
Первую книгу по шаблонам проектирования необходимо прочитать всем программистам.
Это отличная книга на всех уровнях: макет, ясность, понимание, глубина. Это одна из тех замечательных книг, которые вы сначала читаете от корки до корки, а затем используете в качестве справочника, пока не узнаете ее буквально наизнанку.
Вы можете начать со страницы Википедии , но побалуйте себя и этой замечательной книгой.
источник
Применение UML и шаблонов Крейга Лармана. Начните с основ анализа, проектирования и используйте простой сценарий случая. В простой форме знакомит с большинством основных паттернов.
источник
Если вы прочитаете о шаблонах проектирования, вы заметите, что в Java, похоже, реализованы некоторые из них.
Взгляните на исходный код любого фреймворка, и вы сможете почерпнуть информацию о шаблонах проектирования. Лично я не считаю, что они идеально подходят какому-либо моему коду, иногда примеры в книгах и учебных пособиях кажутся немного идеализированными, особенно для кодировщика-одиночки.
Шаблоны проектирования не для ленивых программистов.
источник
Я и мои коллеги изучаем шаблон дизайна, который следует за группой исследования шаблонов . Они готовят список каждого паттерна, который мы должны выучить по порядку, а также имеют вводные вопросы, которые заставляют больше обсуждать в группе.
источник
Я также предлагаю немного поработать с Refactoring to Patterns. только вы прочитаете Head First Design Patterns.
Примечание. Примеры кода написаны на Java, но должны быть очень похожи на примеры C # ...
источник
Для меня не имеет большого смысла углубляться в шаблоны проектирования для человека с очень небольшим опытом. Приятно знать, что они существуют, но на данном этапе вам следует сосредоточиться на других вещах, а не только на изучении шаблонов проектирования.
Они полезны в контексте проблемы - как концепция для новичка / начинающего разработчика они на самом деле не представляют особой практической ценности, если не считать того, что вы должны использовать их, когда и где можете.
ИЗМЕНИТЬ Чтобы прояснить - многие шаблоны проектирования являются результатом проблем, обнаруженных в некоторых областях. Вряд ли новый программист (ИМО) знает шаблон (ы) проектирования, который следует использовать для некоторого набора проблем. Подобно тому, как мы получаем небольшое количество алгоритмов в исследованиях CS, нам нужно понимание того, что мы можем делать с шаблонами и их преимущества, но когда человек все еще строит hello world или открывает для себя stl, практической необходимости в шаблонах проектирования не возникает. Выкройки отличные. Но они не серебряная пуля.
(Ни CASE (инструменты), ни UML, ни SCRUM, ни TDD, ни STL, ни Java, ни XML и т. Д.). Все это лишь аспекты нашей профессии, и рассматривать эти темы как вторые приход наивен.
источник
Шаблоны представляют собой словарный запас высокого уровня, который программисты используют, чтобы говорить об абстрактном дизайне. Если вы повторно используете абстрактное решение, полезно называть его по имени. Если вы изобрели выкройку, профессионально сделайте небольшую проверку, чтобы убедиться, что ей еще не присвоено имя. Если он был назван, то описание может быть полезным.
Написав хоть немного кода, вы заметите, что пишете что-то похожее на то, что вы кодировали раньше. Это шаблон. Даже если это крошечный узор, его стоит заметить. Есть лучший образец? Видите ли вы, как определенные крошечные шаблоны взаимодействуют друг с другом для решения более крупной проблемы? Что ж, в следующий раз, когда вы захотите решить более крупную проблему, вам в голову придет весь шаблон в виде одного фрагмента. Детализированные строки кода становятся механическими.
Чем больше вы замечаете паттернов, тем проще становится программирование и тем больше вы цените некоторые из самых больших и лучших паттернов, разработанных другими программистами. Попробуйте освоить паттерн MVC. Так или иначе, вариации обнаруживаются повсюду, даже в крошечных дизайнерских решениях.
источник
Как только вы поймете концепцию, просмотрите исходный код Eclipse или дизайн, множество действительно хороших примеров этих шаблонов (неудивительно, что Гамма был одним из разработчиков).
источник
Я обнаружил, что статьи о шаблонах дизайна на этом веб-сайте очень легко понять.
Паттерны проектирования на C #
источник