Изучение/реализация шаблонов проектирования (для новичков)

Я запутанный программист-новичок и любитель, пытаясь понять это, так что простите меня, если мой вопрос немного или не имеет смысла.

Я вижу много вопросов о том, как SO крутится вокруг использования шаблонов проектирования, и мне интересно, есть ли у кого-то хорошие ресурсы для изучения и реализации шаблонов проектирования? Я понимаю общую идею и знаю, как/когда использовать пару из них (методы Singletons, Factory), но я знаю, что я упускаю.

(На всякий случай это важно, мой предпочтительный язык - это С#, но я мог бы учиться на примерах на других языках)

Ответ 1

Нарисуйте первые шаблоны дизайна

alt text

а Design Pattern Wikipedia page - лучшие ресурсы для начинающих. FluffyCat - еще один хороший бесплатный онлайн-ресурс для шаблонов проектирования как Java и PHP.

Gang of Four book - это то, куда идти дальше, но это довольно продвинуто, поэтому я бы подождал, пока у вас будет довольно твердая возьмитесь за другие ресурсы.

Ответ 2

Шаблоны проектирования отлично подходят по разным причинам:

  • дает вам начало для решения общих проблем.
  • дает разработчикам лексику, чтобы говорить о некоторых способах решения проблем очень компактно.
  • При работе с разработчиками, которые знают шаблоны проектирования и используют шаблоны проектирования в своих решениях, они будут понимать решения намного быстрее.

Но когда ваша цель - просто изучить шаблоны дизайна, я думаю, что вам не хватает оснований. Все шаблоны проектирования основаны на более общих принципах. Высокое сцепление, низкий принцип сцепления с открытым закрытым принципом, сухим, принцип замены Лискова и т.д. Для этих основ я читал следующие книги в следующем порядке:

После этого вы готовы к основной группе из четырех шаблонов дизайна

  1. Головка первых шаблонов дизайна (первая глава) [ИЛЛЮСТРИРОВАНО] (Мягкая обложка)
  2. БИБЛИЯ
  3. Хороший сайт (ничего не покупайте, это не стоит) http://dofactory.com/Patterns/Patterns.aspx (некоторые реализации этого сайта стоят обсуждение

Следующий шаг:

  1. Шаблоны архитектуры корпоративных приложений (серия подписи Addison-Wesley) (в твердом переплете)
  2. Книги POSA

И всегда помните: шаблон не цель!

Ответ 3

Я бы добавил, что Design Patterns книга из "Банды четырех" - это библия для всех, кто серьезно интересуется шаблонами дизайна.

Ответ 4

Мой совет:

Читайте много о шаблонах из разных источников.

Попытка заставить как можно больше шаблонов использовать весь код, который вы пишете, поскольку этот момент не даст хороших результатов. Вместо этого дайте информации в вашем мозгу некоторое время (читайте: месяцы).

Внезапно вы столкнетесь с проблемой или частью кода, и вы смутно помните, что видели что-то, что могло бы работать как решение этой конкретной проблемы. Настало время просмотреть детали шаблона, о котором вы думаете, и попытаться применить его.

То, что сработало для меня, в любом случае.

Ответ 5

Шаблоны проектирования

Этот учебный сайт содержит следующие подразделы

  • Цель каждого шаблона проектирования
  • Структура реального мира для шаблона проектирования
  • A Заявление о проблемах
  • Подробное обсуждение проблемы
  • Контрольный список о том, как получить шаблон
  • Правила большого пальца при достижении шаблона.
  • Фрагменты кода для шаблона проектирования, который включает С#, С++, Delphi, Java и PHP

Этот сайт также содержит руководство по Anti Шаблоны, UML и Рефакторинг.

Ответ 6

Bruce Eckel имеет книгу о шаблонах дизайна, хотя это Java, она, как и все его книги, потрясающая. И самое лучшее, они бесплатны!

Ответ 9

Я бы порекомендовал взглянуть на квинтологию Жана Пола Буду (?) на Demystifying Design Patterns на DNRtv, приведенные ниже. Видеокасты касаются Singleton, Abstract Factory среди других - разница в том, что вы можете смотреть на него код, обсуждая теорию. Хорошо наблюдать за обедом в дождливый будний день.

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

Ответ 10

Аннотации к приведенным выше комментариям.

Краткий справочник по шаблонам GOF

Вот хорошее место, где вы можете начать dofactory.com/patterns/patterns.aspx - Вы можете найти ссылку на каждый шаблон вместе с соответствующими реализациями.

Как бы то ни было, помните, что это шаблоны GOF. Возможно, вам придется прочитать и понять продвинутые шаблоны, как только вы приобретете достаточный опыт в OOAD. Head First Design Patterns - это хорошее начало, и после достижения определенного прогресса перейдите к шаблонам архитектуры корпоративного приложения Martin Fowler.

Применение шаблонов проектирования - процесс мышления

Еще один важный аспект - применение шаблонов проектирования так же важно, как просто знать их. Чтение этих статей также может помочь вам.

Применение шаблонов проектирования Часть I

Применение шаблонов проектирования Часть II

Надеюсь, что это поможет

Ответ 12

Head First Design Patterns - хороший, как и другие, уже отмеченные. Помимо этого, конечно, оригинальная книга и образцы дизайна С#. Также есть хорошие сайты, которые уже упоминались.

Помимо самообучения, я серьезно рекомендую начинать или посещать модельную группу образцов в вашем регионе. См. Учебное руководство по разработке шаблонов для объяснения и большой порядок изучения шаблонов. Мы сделали это, и я могу честно сказать, что я не буду понимайте, как я сейчас. Еженедельная встреча с другими заинтересованными людьми держит вас удивительно дисциплинированным, когда вы изучаете что-то абстрактное, как шаблоны дизайна.

Счастливые исследования!

Ответ 13

Прежде чем тратить деньги на книги, я бы рекомендовал Википедию отличную дизайн шаблонов. Также для чего-то другого Google для "шаблонов проектирования шаблонов" или поиска "шаблонов проектирования" на YouTube. Получение одинаковой информации, представленной по-разному, часто помогает падению пенни.

Gang of Four - это окончательный текст на наиболее известных шаблонах, но его не так просто читать, а с примерами на С++ не все любимые.

Head First Design Patterns текст гораздо более доступен, но содержит только подмножество шаблонов Gang of Four.

Самое главное - понять, где и почему полезен конкретный шаблон. После этого найдите в Интернете примеры реализации на выбранном вами языке и поэкспериментируйте до тех пор, пока вы его не получите. Поймите один шаблон, прежде чем переходить к следующему. Все понимают некоторые закономерности лучше других (и есть сотни менее известных).

Просто продолжайте подключаться.

Ответ 14

Шаблоны архитектуры корпоративных приложений (в твердом переплете) Мартина Фаулера

Рефакторинг по шаблонам (в твердом переплете) Джошуа Кериевского

Непрерывная интеграция: улучшение качества программного обеспечения и снижение риска (мягкая обложка) Paul Duval et.al.

Помимо архитектуры программного обеспечения: создание и поддержка решений для побед (в мягкой обложке) Люка Хохмана

Ответ 15

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

Для любых программистов, я думаю, что и книга Refactoring от Fowler являются абсолютными минимальными требованиями.

Ответ 16

Для сайтов очень хороший сайт http://ajaxpatterns.org от одного из разработчиков веб-сайта ajaxian.

Ответ 17

Оригинальная книга Design Patterns является обязательным для всех программистов.

Это отличная книга на каждом уровне: макет, ясность, проницательность, глубина. Это одна из тех великих книг, которые вы сначала прочитали с обложкой, а затем используйте в качестве ссылки, пока вы не узнаете ее буквально в наизнанку.

Вы можете начать с страницы Википедии, но также побалуйте себя замечательной книгой.

Ответ 18

Применение UML и шаблонов от Крейга Лармана. Начните с основы анализа, проектирования и используйте простой сценарий Case. Представляет большинство основных шаблонов простым способом.

Ответ 19

Если вы прочтете о шаблонах проектирования, вы заметите, что Java, похоже, некоторые из них реализованы.

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

Шаблоны проектирования не предназначены для ленивых кодировщиков.

Ответ 20

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

Ответ 21

Это не имеет для меня слишком большого смысла для кого-то, у кого очень мало опыта, чтобы глубоко задуматься о шаблонах дизайна. Здорово знать, что они существуют, но на этом этапе вам следует больше сосредоточиться на других вещах, а не просто изучать шаблоны дизайна.

Они полезны в контексте проблемы - как концепция для нового/начинающего разработчика, на самом деле это не слишком практическое значение, кроме того, что вы должны использовать их, когда и где можете.

ИЗМЕНИТЬ Чтобы уточнить, многие шаблоны проектирования являются результатом проблем, обнаруженных в некоторых областях. Невозможно ожидать нового программиста (ИМО), чтобы узнать шаблон проекта, который будет использоваться для некоторых проблем. Так же, как мы получаем небольшое количество алгоритмов в исследованиях CS, нам нужно понять то, что мы можем сделать с шаблонами и их преимуществами, но когда человек все еще строит мир приветствия или обнаруживает stl, не существует практической потребности в шаблонах дизайна. Шаблоны великолепны. Но они не серебряная пуля.

(Также не был CASE (tools), ни один из них не был UML, ни SCRUM, ни TDD, ни STL, ни Java, ни XML и т.д.). Это все просто аспекты нашей профессии и рассмотрение этих тем поскольку второе пришествие является наивным.

Ответ 22

Я также предлагаю иметь shufty в Рефакторинг для шаблонов после того, как вы прочтете "Образцы первого плана дизайна".

Примечание. Примеры кода приведены на Java, но должны быть очень похожи на примеры С#...

Ответ 23

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

После того, как вы закодируете хоть немного, вы заметите, что пишете что-то похожее на то, что вы закодировали раньше. Это шаблон. Даже если это крошечный рисунок, стоит обратить внимание. Есть ли лучший образец? Вы видите, что некоторые крошечные модели взаимодействуют друг с другом, чтобы решить большую проблему? В следующий раз, когда вы захотите решить большую проблему, весь шаблон приходит вам в голову как единый кусок. Сглаживание подробных строк кода становится механическим.

Чем больше вы замечаете шаблоны, тем легче становится программирование, и тем более вы оцените некоторые из самых больших и лучших моделей, разработанных другими программистами. Попробуйте освоить шаблон MVC. Так или иначе, вариации проявляются повсеместно, даже в крошечных дизайнерских решениях.

Ответ 24

Как только вы поймете концепцию, пройдите через исходный код Eclipse или дизайн, много действительно хороших примеров этих шаблонов (неудивительно, что Gamma был одним из дизайнеров).