Nano Hash - криптовалюты, майнинг, программирование

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

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

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

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

28.10.2008

Ответы:


1

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

alt text

и страница Википедии шаблонов дизайна - лучшие ресурсы для новичков. FluffyCat - еще один хороший бесплатный онлайн-ресурс для шаблонов проектирования в обоих Java и PHP.

Книга "Банда четырех" - это куда потом , но он довольно продвинутый, так что я бы подождал, пока вы не освоите другие ресурсы.

28.10.2008
  • Примеры кода C # для шаблонов проектирования Head First доступны по адресу msquaredweb.com/DesignPatterns/ 28.10.2008
  • Я посмотрел на эту книгу ... возненавидел ее. Так что я взял книгу GoF и узнал из нее все о шаблонах проектирования. Это было суховато, но гораздо информативнее. 29.10.2008
  • +1, фантастическая книга! Остальные книги из серии Head First тоже отличные! 29.10.2008
  • @Thomas Owens: Я бы не рекомендовал GoF тем, кто называет себя новичком. HFDP - гораздо более щадящее введение. 29.10.2008
  • Сначала я подумал, что книга «Сначала голова» будет совершенно тошнотворной (в ней много метафор, отступлений и очень разговорный тон)… но на самом деле она действительно изобретательна и информативна; Я очень рад, что рискнул и купил его. Imo, выбор группы из четырех человек = ненужный мазохизм. 02.11.2008
  • Меня действительно тошнило от первой книги. Он проводит так много времени, чтобы развлечься, я думаю, что он плохо передает ключевые идеи - они теряются. Читать это все равно, что смотреть, как чей-то папа пытается быть крутым. Но книга GoF - это другая крайность и, следовательно, не для всех. 27.11.2008
  • +1 за шаблоны дизайна Head First. Изначально «забавный» стиль, который они пытались использовать, меня очень раздражал, но к третьей главе он меня охватил. Их примеры довольно хорошо изложены и действительно пытаются показать, почему и когда использовать шаблоны, не погружая все это в излишне технические разговоры. 10.05.2009
  • На сайте Fluffy Cat также есть шаблоны проектирования на php - ›fluffycat.com/PHP-Design- Выкройки 28.12.2009
  • @AntonioCS: Спасибо, что указали на обновление FluffyCat. Я обновил ответ новыми ссылками. 28.12.2009
  • Мне очень жаль, но я действительно ненавижу серию Head First, на мой вкус, она слишком тупая. 20.03.2010
  • @voyager: В заголовке вопроса явно запрашиваются ресурсы для новичков. 21.03.2010
  • @ Билл: Я знаю, но я согласен с комментариями @Thomas и @Draemon. Мои друзья, не ориентированные на программирование, которые рекомендовали эту серию книг по алгоритмам классов программирования, возненавидели их и в итоге перешли на более сухие книги, потому что количество информации на странице было больше. Это только вопрос предпочтения. Я читал технические книги с юных лет и ходил в высокотехнологичную среднюю школу, что, должно быть, заставило меня читать сухие книги. Я предпочитаю книги, в которых домашние животные не разговаривают со мной свысока и отвлекают, а скорее представляют собой простую информацию, которую я могу усвоить. 21.03.2010
  • +1 Я начал читать отличную книгу GOF. Тем не менее, этот шаблон проектирования «голова в первую очередь» действительно хорош, я бы хотел прочитать его в первую очередь. И что лучше всего, это онлайн. 02.05.2010
  • -1 ВЧ отстой. Более половины содержания в этих книгах бессмысленно, в отличие от других настоящих книг, в которых каждое предложение имеет значение. 07.11.2010
  • @Hippo: Как и другие ресурсы, которые я рекомендовал? Вы хоть вопрос читали? Я запутанный новичок и программист-любитель ... HFDP - хорошая книга для новичков. 08.11.2010
  • Ну да ладно - другие ресурсы не должны быть такими плохими. Но HF на самом деле оскорбляет ваш интеллект - даже серии Teach Yourself и Dummies были лучше. Кроме того, знание американского сленга является обязательным условием для работы в сериале HF. 08.11.2010
  • @Hippo: Книги для чайников попали или пропали. Хороший автор справится с этим, но во многих книгах этой серии нет никакой полезной информации. Мне не нравится серия «Учись сам X за 24 часа» из-за нереалистичных ожиданий, которые она устанавливает. Я думаю, что качество серии HF в среднем намного выше, чем у любой из двух других. Я согласен с тем, что для написания книг по HF требуется американский сленг, но я не помню, чтобы он требовался для понимания каких-либо концепций, только шутки. 08.11.2010
  • @ Билл: Я ценю объективную оценку. Просто меня лично обидели некоторые вещи в HF (они относятся к пользователю так, как будто он / она забыл, что было на предыдущей странице или что-то подобное оскорбительное), и меня больше не обижали чайники или Учите себя. Я определенно был больше новичком, когда использовал две другие серии, но недостатки против HF остались: громоздкость без причины; шутки, рассчитанные в основном на определенную аудиторию; после прочтения (и понимания) большинство книг по HF придется выбросить. 08.11.2010
  • @Hippo: В каждой книге HF прямо говорится, что повторение является ключом к изучению материала. Если вам нужно иметь при себе книгу для начинающих по программированию для справки, то какой из материала вы действительно усвоили? Если вы можете выбросить его после прочтения, я бы сказал, что он неплохо справился со своей задачей. 08.11.2010

  • 2

    Паттерны проектирования хороши по разным причинам:

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

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

    1. Head First Объектно-ориентированный анализ и дизайн (Head First) [ИЛЛЮСТРАЦИЯ] (Мягкая обложка)
    2. Применение UML и шаблонов (в твердом переплете)
    3. Agile-принципы, шаблоны и практики в C # (серия Роберта К. Мартина ) (Твердая обложка)

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

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

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

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

    И всегда помните: выкройка - это не цель!

    28.10.2008
  • Я думаю, что основ объектно-ориентированного программирования (инкапсуляция, наследование, полиморфизм и т. Д.) Достаточно, чтобы начать изучение шаблонов проектирования. Вы можете изучить другие принципы (высокая степень сцепления, принцип открытой и закрытой связи с низкой степенью связи, принцип DRY, принцип замещения Лискова и т. Д.) С помощью шаблонов обучения. 29.10.2008
  • Я согласен, что вы можете изучить шаблоны проектирования, используя только основы объектно-ориентированного программирования. Но затем вы доходите до того, что можете заставить шаблон работать, но еще не до конца понимаете, почему это хороший дизайн, какие компромиссы вы пошли на компромисс и как вы можете вносить изменения в шаблоны. 29.10.2008

  • 3

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

    28.10.2008
  • Или для тех, кто хочет сказать своим друзьям-программистам, что они прочитали книгу «Банда четырех» :) 01.09.2009

  • 4

    Мой совет:

    Много читайте о паттернах из разных источников.

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

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

    Во всяком случае, это то, что у меня сработало.

    28.10.2008

    5

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

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

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

    Этот сайт также содержит руководство по антипаттернам, UML и рефакторингу.

    01.09.2009
  • Я нашел сайт очень полезным. Хорошие, наглядные примеры. 23.05.2016

  • 6

    У Брюса Экеля есть книга по шаблонам проектирования, хотя это Java, она, как и все его книги, потрясающая. И что самое приятное, они бесплатные!

    28.10.2008
  • Спасибо за ссылку, не понимал, что это бесплатно онлайн. 21.01.2009

  • 7

    Шаблоны проектирования C # 3.0 для точки зрения C # на шаблоны проектирования.

    alt text
    (источник: oreilly.com)

    28.10.2008

    8

    Вводная книга, которую я нашел полезной и хорошо написанной, - это Объяснение шаблонов проектирования Алан Шеллоуэй и Джеймс Тротт (Эддисон Уэсли).

    alt text

    не начинать с банды Четыре книги, потому что это ни в коем случае не вводная книга.

    29.10.2008

    9

    Я бы порекомендовал взглянуть на квинтологию (?) Жана Поля Будху о демистификации шаблонов дизайна на 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

    29.10.2008
  • DnrTV не работает! Это такой позор, потому что скриншоты Boodhoo информативны. Вы видели видео, размещенные где-нибудь еще? У вас есть видеофайлы, я буду рад держать их в сети. 08.10.2019

  • 10

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

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

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

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

    Применение шаблонов дизайна - процесс обдумывания

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

    Применение шаблонов дизайна, часть I

    Применение шаблонов дизайна, часть II

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

    15.12.2008

    11

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

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

    Удачной учебы!

    29.10.2008

    12

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

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

    Текст Head First Design Patterns гораздо доступнее но содержит только подмножество паттернов «Банды четырех».

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

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

    22.12.2009

    13

    Шаблоны дизайна
    (источник: Amazon)

    28.10.2008

    14

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

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

    Непрерывная интеграция: повышение качества программного обеспечения и снижение риска (мягкая обложка) Пол Дюваль и др.

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

    28.10.2008

    15

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

    Я думаю, что для любых программистов это и книга Фаулера «Рефакторинг» являются минимальными требованиями.

    28.10.2008
  • Книги POSA не создавались по образцу книги GOF - GOF оказался первым изданным - они находились в производстве в то же время. 28.10.2008
  • Чтобы избежать путаницы, я хочу сказать, что БОЛЬШИНСТВО шаблонов проектирования НЕ реализовано в библиотеке. Многие шаблоны образуются путем объединения библиотечных классов вместе. 28.10.2008
  • Я сказал, что это можно сделать в библиотеке - извините за это, Билл, спасибо за пояснение. Шаблоны проектирования, как правило, подобны библиотекам, но вещи, которые вы обычно не можете ПОЛУЧИТЬ в библиотеке, например, различные способы взаимодействия неизвестных друг другу классов. 29.10.2008

  • 16

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

    28.10.2008

    17

    Обязательно прочтите оригинальную книгу Шаблоны проектирования для всех программистов.

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

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

    28.10.2008

    18

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

    28.10.2008

    19

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

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

    Паттерны проектирования не для ленивых программистов.

    28.10.2008

    20

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

    27.11.2008

    21

    Я также предлагаю немного поработать на странице Рефакторинг под шаблоны, как только вы прочитаете Head First Design Patterns .

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

    28.10.2008

    22

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

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

    РЕДАКТИРОВАТЬ Чтобы прояснить - многие шаблоны проектирования являются результатом проблем, обнаруженных в некоторых областях. Вряд ли можно ожидать (ИМО) от нового программиста, что он знает шаблон (ы) проектирования, который следует использовать для некоторого набора проблем. Подобно тому, как мы получаем небольшое количество алгоритмов в исследованиях CS, нам необходимо понимание того, что мы можем делать с шаблонами и их преимущества, но когда человек все еще строит hello world или открывает для себя stl, практической необходимости в шаблонах проектирования нет. Выкройки отличные. Но они не серебряная пуля.

    (Ни CASE (инструменты), ни UML, ни SCRUM, ни TDD, ни STL, ни Java, ни XML и т. Д.). Все это лишь аспекты нашей профессии, и рассматривать эти темы как вторые приход наивен.

    28.10.2008
  • Но если вы не знаете о шаблонах, вы не узнаете, есть ли какой-то, который решает вашу конкретную проблему. Да, как новичку вам вряд ли понадобится шаблон, но важно изучить шаблоны до того, как возникнет такая необходимость. 28.10.2008
  • Думаю, я уже писал об этом в своем посте ... 28.10.2008
  • Вам нужно больше, чем просто знать, что они существуют ... вам нужно знать, как они работают и в каких ситуациях они используются. Это немного больше, чем поверхностные знания. Могут пройти годы, прежде чем вы начнете использовать выкройку, но когда вы это сделаете, не время учить ее. 28.10.2008
  • То есть вы говорите, что новичок должен выучить и понять десятки или больше шаблонов? Что тем временем выходит из-под контроля? Я не спорю против шаблонов. И я также не думаю, что изучение специфики шаблона JIT - это плохо. Изучение шаблонов перед другими вещами ИМО бесполезно 29.10.2008

  • 23

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

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

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

    28.10.2008

    24

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

    27.11.2008

    25

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

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

    23.08.2009
    Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..