Я прочитал около 4-5 книг по шаблонам проектирования, но все же не чувствую, что приблизился к промежуточному уровню в шаблонах проектирования?
Как мне пойти изучать шаблоны дизайна?
Есть ли хорошая книга для шаблонов дизайна?
Я знаю, что это придет только с опытом, но должен быть какой-то способ справиться с этим?
design-patterns
Ананд
источник
источник
Ответы:
Лучший способ начать кодирование с них. Шаблоны проектирования - это отличная концепция, которую сложно применить, просто прочитав о них. Возьмите несколько примеров реализаций, которые вы найдете в Интернете, и соберите их.
Отличным ресурсом является страница Data & Object Factory . Они идут по шаблонам и дают вам как концептуальные, так и реальные примеры. Их справочный материал тоже великолепен.
источник
Я прочитал три книги и до сих пор не очень хорошо разбирался в шаблонах, пока не прочитал « Первые шаблоны дизайна от OReilly». Эта книга открыла мне глаза и действительно хорошо объяснила.
источник
Мои два цента за такой и старый вопрос
Некоторые люди уже упоминали, практика и рефакторинг. Я считаю, что правильный порядок изучения шаблонов таков:
Большинство людей игнорируют 1, многие считают, что они могут сделать 2, и почти все идут прямо на 3.
Для меня ключом к совершенствованию моих программных навыков было изучение TDD. Это может быть долгое время мучительного и медленного кодирования, но написание первых тестов, безусловно, заставляет вас много думать о вашем коде. Если классу нужно слишком много шаблонов или он легко ломается, вы начинаете замечать неприятные запахи довольно быстро
Основное преимущество TDD заключается в том, что вы теряете страх перед рефакторингом своего кода и заставляете вас писать классы, которые являются очень независимыми и связными. Без хорошего набора тестов просто слишком больно трогать то, что не сломано. С сетью безопасности вы действительно будете в решительных изменениях в своем коде. Это тот момент, когда вы действительно можете начать учиться на практике.
Теперь наступает момент, когда вы должны читать книги о шаблонах, и, на мой взгляд, это слишком большая трата времени на то, чтобы слишком стараться. Я очень хорошо понял шаблоны только после того, как заметил, что сделал что-то подобное, или я мог применить это к существующему коду. Без тестов безопасности или привычек рефакторинга я бы дождался нового проекта. Проблема использования шаблонов в новом проекте заключается в том, что вы не видите, как они влияют или изменяют рабочий код. Я понял программный паттерн только после того, как преобразовал свой код в один из них, никогда, когда я ввел новый код в свой код.
источник
Дерек Банас (Derek Banas) создал учебные пособия для YouTube по разработке шаблонов, которые мне очень нравятся
http://www.youtube.com/playlist?list=PLF206E906175C7E07
Они могут быть немного короткими во времени, но его время и представление делают их очень приятными для изучения.
источник
Практика, практика, практика.
Вы можете читать об игре на виолончели в течение многих лет, но при этом не сможете поклониться инструменту и сделать что-нибудь, что звучит как музыка.
Шаблоны проектирования лучше всего признаются проблемой высокого уровня; тот, который уместен, только если у вас есть опыт, необходимый, чтобы признать их полезными. Хорошо, что вы понимаете, что они полезны, но если вы не видели ситуаций, в которых они применимы или применялись, почти невозможно понять их истинную ценность.
Они становятся полезными, когда вы узнаете шаблоны проектирования в чужом коде или обнаружите проблему на этапе проектирования, которая хорошо согласуется с шаблоном; а затем изучите формальный шаблон, изучите проблему и определите, какая дельта находится между ними, и что это говорит как о шаблоне, так и о проблеме.
Это действительно то же самое, что и кодирование; K & R может быть «библией» для C, но чтение ее от корки до корки несколько раз просто не дает практического опыта; Там нет замены для опыта.
источник
Практика Практика практика. Я думаю, что от 4 до 5 книг - это даже чрезмерное упражнение по чтению без хорошей практики. Я считаю, что лучший способ сделать это - начать рефакторинг ваших текущих проектов с использованием шаблонов. Или, если у вас нет проектов, над которыми вы активно работаете, просто сделайте это по-своему, а затем попробуйте рефакторинг к шаблонам .
Вы не сможете оценить их в полной мере, если не пострадали от проблем, которые они решают. И, пожалуйста, имейте в виду, что они не являются серебряными пулями - вам не нужно запоминать их и прикладывать все усилия, чтобы применить их на лету. Мои два цента..
источник
Задайте себе эти вопросы:
Что они делают?
Что они отделяют / пара?
Когда вы должны их использовать?
Когда вы не должны их использовать?
Какая недостающая языковая особенность заставит их уйти?
Какой технический долг вы берете на себя, используя его?
Есть ли более простой способ выполнить работу?
источник
Я обнаружил, что немного сложно понять или понять преимущества некоторых шаблонов, пока один не поймет проблемы, которые они решают, а другой (хуже), как проблемы были реализованы.
Кроме книг GOF и POSA я не читал ни одной книги, поэтому не могу дать вам другие рекомендации. На самом деле, вам просто необходимо понять проблемы, и я думаю, что многие менее опытные разработчики могут не оценить преимущества шаблонов. Это не против них. Намного легче принимать, понимать и ценить хорошие решения, когда нужно сначала бороться с плохими альтернативами.
Удачи
источник
Много хороших примеров было дано. Я хотел бы добавить один:
Неправильно их использовать. Вам не нужно делать это преднамеренно, это произойдет, когда вы попытаетесь применить их в первоначальном соответствии с Design-Pattern. В течение этого времени каждая проблема, которую вы увидите, будет соответствовать одному шаблону дизайна. Зачастую все проблемы по какой-то причине соответствуют одному и тому же шаблону проектирования (Сингелтон - основной кандидат на это).
И вы будете применять шаблон, и это будет хорошо. А через несколько месяцев вам нужно будет что-то изменить в коде и увидеть, что использование этого конкретного шаблона было не таким уж умным, потому что вы закодировали себя в угол, и вам нужно снова провести рефакторинг.
Конечно, это не совсем ответ «делай, и ты научишься за 21 день», но, по моему опыту, он, скорее всего, даст тебе хорошее представление об этом.
источник
Вы читали "Объясненные шаблоны дизайна" Аллана Шаллоя.
Эта книга сильно отличается от других книг по шаблонам проектирования, потому что это не столько каталог шаблонов, но прежде всего представляет способ разложения проблемного пространства, которое легко сопоставляется с шаблонами.
Проблемы могут быть разложены на две части: общие вещи и разные вещи. Как только это будет сделано, мы сопоставим общие вещи с интерфейсом, а вещи - с реализацией. По сути, многие паттерны попадают в этот «паттерн».
Например, в шаблоне «Стратегия» общие вещи выражаются в контексте стратегии, а переменные части выражаются в виде конкретных стратегий.
Я нахожу эту книгу вызывающей мысли в отличие от других книг с образцами, которые, по моему мнению, имеют ту же степень возбуждения, что и чтение телефонной книги.
источник
Вы пробовали книгу «Банда четырех»?
Шаблоны проектирования: элементы многоразового объектно-ориентированного программного обеспечения
источник
Для книг я бы порекомендовал шаблоны проектирования с объяснением и шаблоны дизайна Head First . Чтобы по-настоящему выучить эти шаблоны, вы должны взглянуть на существующий код. Посмотрите, какие шаблоны вы уже используете. Посмотрите на запахи кода и какие шаблоны могут их решить.
источник
Я привел несколько групп обсуждения шаблонов проектирования ( наш сайт ) и прочитал 5 или 6 книг по шаблонам. Я рекомендую начать с книги «Head First Design Patterns» и посетить или начать дискуссионную группу. Поначалу книга «Head First» может показаться немного хасборо, но большинству людей она понравится после прочтения главы или двух.
Используйте выдающийся ресурс - «Учебное руководство по проектированию шаблонов» Джошуа Кереивиски, чтобы упорядочить шаблоны и помочь своей дискуссионной группе. Исходя из опыта, единственное изменение, которое я предлагаю при оформлении заказа, - это поставить стратегию на первое место. Большинство современных разработчиков испытали некоторое хорошее или плохое воплощение Фабрики, поэтому начало работы с Фабрикой может привести к большому разговору и путанице в шаблоне. Это имеет тенденцию отвлекать внимание от того, как изучать и изучать шаблоны, что довольно важно при этом. первая встреча.
источник
Я рекомендую HeadFirst DesignPattern. Чтение книги недостаточно, после усвоения концепций вам необходимо найти ответы на многие вопросы, возникающие у вас в голове, и попытаться найти реальные приложения, в которых эти шаблоны могут быть использованы. Я делаю то же самое и начал задавать вопросы, даже эти вопросы выглядят глупо.
источник
Мое предложение было бы сочетанием реализации нескольких из них и анализа некоторых реализаций их. Например, в .Net используются шаблоны адаптеров, если вы посмотрите на адаптеры данных, а также несколько других, если немного покопаться в платформе.
источник
Я не знаю о лучшей книге, но пуристы могли бы сказать, что шаблоны проектирования: элементы многоразового объектно-ориентированного программного обеспечения.
Что касается моего личного фаворита, мне нравятся Head First Design Patterns, опубликованные O'Reilly. Это написано разговорным голосом, который обращается ко мне. Когда я читал его, я в то же время просматривал свой исходный код, чтобы увидеть, относится ли он к тому, что я читал. Если это так, я рефакторинг. Так я узнал «Цепочку ответственности».
Практика - Практика - Практика.
источник
Шаблоны проектирования - это просто инструменты, вроде библиотечных функций. Если вы знаете, что они там есть и их приблизительная функция, вы можете при необходимости выкопать их из книги.
В шаблонах проектирования нет ничего волшебного, и любой хороший программист придумал для себя 90% до того, как вышли какие-либо книги. По большей части я считаю, что книги наиболее полезны для простого определения имен для различных шаблонов, чтобы мы могли легче их обсуждать.
источник
Я выучил шаблоны проектирования, написав много действительно ужасного программного обеспечения. Когда мне было около 12 лет, я понятия не имел, что было хорошо или плохо. Я просто написал кучу кода для спагетти. В течение следующих 10 лет я учился на своих ошибках. Я обнаружил, что работает, а что нет. Я независимо друг от друга изобрел большинство общих шаблонов проектирования, поэтому, когда я впервые услышал, что такое шаблоны проектирования, я был очень взволнован, узнав о них, а затем очень разочарован тем, что это была просто коллекция названий вещей, которые я уже знал интуитивно. (эта шутка о том, как научить себя C ++ за 10 лет, на самом деле не шутка)
Мораль истории: напиши много кода. Как уже говорили другие, практикуйтесь, практикуйтесь, практикуйтесь. Я думаю, что до тех пор, пока вы не поймете, почему ваш текущий дизайн плох, и не начнете искать лучший путь, у вас не будет хорошего представления о том, где применять различные шаблоны дизайна. Книги шаблонов проектирования должны предоставлять вам усовершенствованное решение и общую терминологию для обсуждения с другими разработчиками, а не вставное решение проблемы, которую вы не понимаете.
источник
Идея, что читайте шаблоны проектирования, практикуйте их кодирование, на самом деле не поможет IMO. Когда вы читаете эти книги 1. Ищите основную проблему, которую решает конкретный шаблон проектирования, лучше всего начинать с Creational Patterns. 2. Я уверен, что вы писали код в прошлом, проанализируйте, сталкивались ли вы с теми же проблемами, с которыми шаблоны проектирования стремятся обеспечить решение. 3. Попытайтесь изменить дизайн кода кода или, возможно, начать заново.
О ресурсах вы можете проверить эти
1 - быстрый старт, 2 - углубленное изучение. 3 объяснит или должен заставить вас задуматься над тем, что вы узнали за 2 года, вписывается в корпоративное программное обеспечение.
Мои 2 цента ...
источник
Я думаю, что также сложно изучать шаблоны проектирования. Вы должны знать больше об ООП и некотором опыте разработки приложений от среднего до крупного. Для меня, я учусь как группа разработчиков, чтобы сделать обсуждение. Мы следуем Учебному руководству по разработке шаблонов, чтобы они закончили изучение шаблонов. Есть разработчики C # и JavaScript объединяются. Мне кажется, что разработчик C # пишет коды на JavaScript, а разработчик JavaScript делает то же самое для кодов C #. После того, как я покидаю собрание, я также занимаюсь исследованиями и читаю несколько книг дома для ознакомления. Лучший способ понять больше и помнить, на мой взгляд, это вести блог с примерами на C # и JavaScript здесь http://tech.wowkhmer.com/category/Design-Patterns.aspx .
Я хотел бы предложить сначала, прежде чем перейти к каждому шаблону проектирования, пожалуйста, поймите название шаблонов. Кроме того, если кто-то знает эту концепцию, просто объясните и приведите один пример не только программирования, но и мира чтения.
например:
Заводской метод:
Читайте мир: я просто даю деньги 5, 10 или 20 долларов, и они будут производить пиццу обратно, ничего не зная о том, как она производится, я просто получаю маленькую, среднюю или большую пиццу в зависимости от вложенных денег, чтобы я мог есть или делать что угодно.
Программирование: клиент просто передает значение параметра $ 5, $ 10 или $ 20 фабричному методу и возвращает объект Pizza обратно. Таким образом, клиент может использовать этот объект, не зная, как он обрабатывает.
Я не уверен, что это может вам помочь. Это зависит от уровня знаний людей, присоединяющихся к встрече.
источник
Я думаю, что вам нужно изучить некоторые проблемы, с которыми вы столкнулись как разработчик, когда вы выдернули свои волосы после того, как вам пришлось пересматривать код в 10-й раз из-за еще одного изменения дизайна. У вас, вероятно, есть список проектов, в которых вы чувствовали, что было много переделок и боли.
Из этого списка вы можете получить сценарии, которые намерены решить шаблоны проектирования. Было ли время, когда вам нужно было выполнить одну и ту же серию действий с различными наборами данных? Нужно ли вам иметь возможность использовать приложение в будущем, но вы хотите избежать переработки всей своей логики для существующих классов? Начните с этих сценариев и вернитесь к каталогу шаблонов и их соответствующих проблем, которые они должны решить. Скорее всего, вы увидите некоторые совпадения между GoF и вашей библиотекой проектов.
источник
Для начинающих, шаблоны Head First Design будут подходить, как только мы ознакомимся со всеми шаблонами, а затем попытаемся визуализировать объекты реального времени в эти шаблоны.
Книга поможет вам понять основные понятия, если, пока вы не внедрились в реальный мир, вы НЕ МОЖЕТЕ БЫТЬ МАСТЕРОМ ДИЗАЙН-ДИЗАЙНОВ
источник