Как изучать шаблоны проектирования? [закрытый]

Я прочитал около 4-5 книг по шаблонам дизайна, но все же я не чувствую, что приблизился к промежуточному уровню в шаблонах дизайна?

Как я должен изучать шаблоны проектирования?

есть ли хорошая книга по шаблонам проектирования?

Я знаю, что это придет только с опытом, но должен быть способ, чтобы освоить эти?

23 ответов


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

большим ресурсом является Фабрика Данных И Объектов


Я прочитал три книги и все еще не очень хорошо понимал шаблоны, пока не прочитал Головы Первый Дизайн Шаблоны по OReilly. Эта книга открыла мне глаза и очень хорошо объяснила.

alt text


мои два цента за такой и старый вопрос

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

  1. изучите разработку с тестовым приводом (TDD)
  2. узнать рефакторинг
  3. стиль

большинство людей игнорируют 1, Многие считают, что они могут сделать 2, и почти все идут прямо на 3.

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

основным преимуществом TDD является то, что вы теряете страх перед рефакторингом кода и заставляете писать классы, которые являются очень независимыми и сплоченными. Без хорошего набора тестов слишком больно прикасаться к тому, что не сломано. С safety net вы будете действительно приключение в радикальные изменения в вашем коде. Это момент, когда вы действительно можете начать учиться на практике.

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


Дерек Банас сделал YouTube учебники для desing шаблонов, которые мне очень нравятся:

http://www.youtube.com/playlist?list=PLF206E906175C7E07

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


практика, практика, практика.

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

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

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

Это действительно то же самое, что и кодирование; K&R может быть "библией" для C, но читать ее от корки до корки несколько раз просто не дают одного практического опыта; нет замены опыту.


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

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


задайте себе следующие вопросы:

что они делают?

что они разделяют / пара?

когда вы должны их использовать?

когда вы не используете их?

какая отсутствующая языковая функция заставит их уйти?

какой технический долг вы несете, используя его?

есть ли более простой способ выполнить работу?


было приведено много хороших примеров. Я хотел бы добавить:

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

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

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


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

кроме книг GOF и POSA, которые я действительно не читал, поэтому я не могу дать вам другие рекомендации. На самом деле вам просто нужно иметь представление о проблемах доменов, и я думаю, что многие менее опытные разработчики не смогут оценить преимущества моделей. Это не просто пренебрежение к ним. Гораздо легче принять, понять и оценить хорошие решения, когда сначала приходится бороться с плохими альтернативами.

удачи



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


вы читали "шаблоны проектирования" объяснил, Аллан Shalloway.

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

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

например, в шаблоне стратегии общие вещи выражаются как контекст стратегии, а переменные части выражаются как конкретные стратегии.


последний из nettuts.

Это хороший ресурс для новичков.


Я привел несколько групп обсуждения шаблонов дизайна (наш сайт) и прочитали 5 или 6 книг шаблонов. Я рекомендую начать с книги Head First Design Patterns и посетить или начать дискуссионную группу. Глава первая книга может выглядеть немного Hasboro сначала, но большинство людей любят его после прочтения главы или двух.

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


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


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


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

Что касается моего личного фаворита, мне нравится Головы Первый Дизайн Шаблоны опубликованная o'Reilly. Это написано разговорным голосом, который мне нравится. Прочитав его, я одновременно просмотрел исходный код, чтобы понять, применим ли он к тому, что я читаю. Если да, то я преобразился. Вот как я научился цепочке Ответственность.

Практика - Практика - Практика.


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

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


то, как я узнал шаблоны дизайна, написав много действительно ужасного программного обеспечения. Когда мне было 12, я понятия не имел, что хорошо, а что плохо. Я только что написал кучу кода для спагетти. В течение следующих 10 лет я учился на своих ошибках. Я обнаружил, что работает, а что нет. Я самостоятельно изобрел большинство распространенных шаблонов дизайна, поэтому, когда я впервые услышал, что такое шаблоны дизайна, я был очень рад узнать о них, а затем очень разочарован тем, что это была просто коллекция названия вещей, которые я уже знал интуитивно. (эта шутка об обучении себя C++ за 10 лет на самом деле не шутка)

мораль истории: напишите много кода. Как говорили другие, практика, практика, практика. Я думаю, пока вы не поймете, почему ваш текущий дизайн плох и не будете искать лучший способ, у вас не будет хорошей идеи о том, где применять различные шаблоны дизайна. Design pattern books должны предоставить вам изысканное решение и общую терминологию для обсуждения это с другими разработчиками, а не вставленное решение проблемы, которую вы не понимаете.


понятие, которое читает шаблоны проектирования, практика кодирования их на самом деле не поможет ИМО. Когда вы читаете эти книги 1. Ищите основную проблему, которую решает конкретный шаблон дизайна, начиная с творческих шаблонов, это ваш лучший выбор. 2. Я уверен, что вы написали код в прошлом, проанализируйте, сталкивались ли вы с теми же проблемами, что и шаблоны проектирования. 3. Попробуйте изменить код фактора/re или, возможно, начать с чистого листа.

о ресурсах вы можете проверить эти

  1. www.dofactory.com
  2. шаблоны проектирования: элементы многоразового объектно-ориентированного программного обеспечения (серия профессиональных вычислений Аддисона-Уэсли)Эриха гаммы, Ричарда Хелма, Ральфа Джонсона и Джона М.--6-->
  3. Шаблоны архитектуры корпоративных приложений Мартина Фаулера

1 Быстрый Старт, 2 будет углубленным изучением..3 объяснит или должен заставить вас думать, что вы узнали в 2 подходит в enterprise программное обеспечение.

мои 2 цента...


Я бы подумал, что также трудно изучать шаблоны проектирования. Вы должны знать больше об ООП и некоторых опытах со средней и большой разработкой приложений. Для меня я учусь как группа разработчиков, чтобы сделать обсуждение. Мы следуем Учебное Пособие По Дизайну Шаблонов что они завершили исследования моделей. Есть разработчики C# и JavaScript, которые объединяются вместе. Это необычная вещь для меня-разработчик C# пишет коды в JavaScript, а разработчик JavaScript делает то же самое для кодов c#. После того, как я покидаю собрание, я также исследую и читаю несколько книг дома для обзора. Лучший способ понять больше и запомнить в моем уме-это делать блоги с примерами как на C#, так и на JavaScript здесь http://tech.wowkhmer.com/category/Design-Patterns.aspx.

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

например:

Способ Завода:

Read world: я просто даю деньги $5, $ 10 или $20, и он будет производить пиццу обратно, не зная ничего о том, как он производит, я просто получаю небольшую, среднюю или большую пиццу, зависящую от денежных средств, чтобы я мог есть или делать что угодно.

Программирование: клиент просто передает значение параметра $5, $ 10 или $20 заводскому методу, и он вернет объект Pizza обратно. Так клиент может использовать этот объект, не зная, как он обрабатывается.

Я не уверен, что это может помочь вам. Это зависит от уровня знаний людей, участвующих во встрече.


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

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


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

книга поможет вам понять основные понятия, если только вы не внедрили в реальном мире вы не можете быть мастером шаблонов проектирования