Как изучать образцы дизайна?

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

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

Есть ли хорошая книга для шаблонов дизайна?

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

Ответ 1

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

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

Ответ 2

Я прочитал три книги и до сих пор не очень хорошо разбирался в шаблонах, пока не прочитал Head First Design Patterns от OReilly. Эта книга открыла мне глаза и действительно хорошо объяснила.

alt text

Ответ 3

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

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

  • Узнать TDD
  • Изучите рефакторинг
  • Узнать шаблоны

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

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

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

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

Ответ 4

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

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

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

Ответ 5

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

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

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

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

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

Ответ 6

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

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

Ответ 7

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

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

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

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

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

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

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

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

Ответ 8

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

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

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

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

Ответ 9

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

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

Удачи.

Ответ 11

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

Ответ 12

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

Это хороший ресурс для начинающих.

Ответ 13

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

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

Ответ 14

Вы прочитали "Разработанные образцы дизайна", Аллан Шеллоуэй.

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

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

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

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

Ответ 15

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

Ответ 16

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

Ответ 17

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

Что касается моего личного фаворита, мне нравится Head First Design Patterns, опубликованный O'Reilly. Это написано разговорным голосом, который обращается ко мне. Когда я прочитал его, я одновременно просмотрел исходный код, чтобы узнать, применяется ли он к тому, что я читал. Если бы это было так, я реорганизовал. Так я узнал Цепь ответственности.

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

Ответ 18

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

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

Ответ 19

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

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

Ответ 20

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

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

  • www.dofactory.com
  • Шаблоны проектирования: элементы многоразового объектно-ориентированного программного обеспечения (серии профессиональных вычислений Addison-Wesley) Эриха Гамма, Ричарда Хелма, Ральфа Джонсона и Джона М. Влиссидеса
  • Шаблоны архитектуры корпоративных приложений Мартина Фаулера

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

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

Ответ 21

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

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

например:

Factory Метод:

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

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

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

Ответ 22

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

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

Ответ 23

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

Книга поможет вам понять основные понятия, если до тех пор, пока вы не осуществите в реальном мире, вы НЕ ДОЛЖНЫ БЫТЬ МАСТЕРОМ ИЗОБРАЖЕНИЙ ДИЗАЙНА