- Saved searches
- Use saved searches to filter your results more quickly
- bethrobson/Head-First-Design-Patterns
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
- Обзор книги “Паттерны проектирования” (Head First Design Patterns)
- Особенности книги
- Основная тема и ключевая мысль
- “Краткое изложение”
- Достоинства и недостатки
- Дополнительные книги по паттернам проектирования
- Паттерны проектирования на JavaRush
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Code for Head First Design Patterns book (2020)
bethrobson/Head-First-Design-Patterns
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Changed player to tuner on line 33
Git stats
Files
Failed to load latest commit information.
README.md
Head First Design Patterns (2020 2nd Edition)
I have recently updated all the code for Head First Design Patterns for the 2nd edition of the book, released in December, 2020.
Download the code and compile and run from the command line, or load the code into project in Eclipse using Java 8 or higher.
Other links for the book are available on the book page at wickedlysmart.com.
About
Code for Head First Design Patterns book (2020)
Обзор книги “Паттерны проектирования” (Head First Design Patterns)
Среди людей, которые хотя бы минимально знакомы с серией Head First, есть немало тех, кто считает подобную литературу довольно поверхностным чтивом для новичков. Что сказать, глубоко изучить сложную тему из области программирования за 48 часов вряд ли получится. Однако сложно поспорить, что книга “Паттерны проектирования” — книга, которая будет полезным пособием по программированию для начинающих. Данная книга входит в десятку самых популярных на Stackoverflow, и небезосновательно. Легкость подачи, фундаментальная тема и качественные примеры делают книгу востребованной и сейчас и, на мой взгляд, еще на протяжении многих лет.
Особенности книги
- Наглядность
- Разговорный стиль изложения
- Большое количество иллюстраций
- Активное участие читателя
- Обращение к эмоциям
- Привлечение внимания читателя
Основная тема и ключевая мысль
“Наверняка вашу задачу кто-то уже решал” — так начинается первая глава книги, передавая весь смысл паттернов проектирования в программировании. Основная цель — правильно донести читателю их смысл, ведь в первую очередь программист должен знать, для чего нужны паттерны и в какой момент их необходимо применить. По сути, сначала шаблоны нужно разложить по полочкам у себя в голове, и только после этого внедрять их в программы. Если новичок в программировании разбирается в паттернах “на троечку”, их использование может сильно усложнить код (а должно упрощать!). На вопрос “Почему следует применять паттерны проектирования?” книга дает однозначный ответ: “Знание таких концепций, как абстракция, наследование и полиморфизм, еще не делает из вас хорошего ОО-проектировщика. Паттерны содержат проверенный опыт ОО-проектирования.”
“Краткое изложение”
- Наблюдатель. Распространяет по объектам события, которые заинтересованы в их наступлении.
- Декоратор. Другой взгляд на наследование в Java и наделение классов Java новыми возможностями без модификации кода.
- Фабрика. Паттерн спасает код от нежелательных зависимостей.
- Одиночка. Также известный как Singleton, позволяет создавать единственный на всю программу объект класса.
- Команда. Паттерн позволяет удобно инкапсулировать вызов метода, расширяя возможности.
- Адаптер и Фасад. Решение проблемы несовместимости интерфейсов, а также упаковка объектов для упрощения их интерфейса.
- Шаблонный метод. Инкапсулирование алгоритмических блоков, позволяющее субклассам в любой момент связываться с нужным алгоритмом обработки.
- Итератор и Компоновщик. Паттерн предоставляет удобный инструмент перебора коллекций вне зависимости от их типа. Дополнительно в главе дается порция информации о суперколлекциях.
- Состояние. Объекты наделяются способностью управлять своим поведением через изменение внутреннего состояния.
- Заместитель. Очень удобный паттерн для управления доступом к объекту.
Достоинства и недостатки
Я, как и многие из тех, кто учится на JavaRush, холодно отношусь к скучноватым лекциям, зубрежке материала и прочему насилию над психикой ученика, жаждущего знаний. Силы, потраченные на заучивание непонятных текстов, на мой взгляд, лучше всего направить на поиск альтернативных источников обучения. Эта книга — одна из тех, на которую стоит потратить свое время и усилия. Отличный стиль изложения, грамотное управление вниманием читателя, повторяемость ключевых моментов формируют главное достоинство этой книги — легкость усвоения материала. Большое количество иллюстраций — дополнительный плюс. На мой взгляд, в книге каждая картинка на своем месте: все они позволяют усилить слова авторов и глубже понять суть материала. Как я уже писал выше, эта книга — не справочник: у ее авторов нет цели перечислить все паттерны. Ее главная задача — дать понимание и рассказать об основных шаблонах, чтобы остальные, более сложные, воспринимались легче. И с этим она справляется на все 100%. Среди недостатков можно выделить то, что Head first design patterns на русском читается не так гладко, как на английском. Конечно же, каждый разработчик должен владеть английским, но у начинающих программистов этот навык не всегда прокачан до такой степени, чтобы читать книги в оригинале. Тем не менее, это можно считать натянутым минусом, так как материал подается достаточно точно и смысл сохраняется.
Дополнительные книги по паттернам проектирования
Я сторонник убеждения, что фундаментальные темы лучше изучать по нескольким источникам и искать в них подходящий для себя стиль подачи. Когда захотите погрузиться в паттерны и почитать дополнительную теорию, поверьте, вам будет, чем занять свои вечера.
- Приемы объектно-ориентированного проектирования. Паттерны проектирования (Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж.). Это более серьезное издание, справочник паттернов, очень уважаемая книга от “Банды четырех”. Многие называют ее библией ОО-проектирования. В сети мнения разработчиков делятся на 3 лагеря:
- одни утверждают, что книга устарела, и из-за стиля изложения читать ее невозможно
- другие рекомендуют использовать книгу исключительно как справочник по паттернам, не более
- третьи говорят, что книга — святой грааль паттернов проектирования, и ее должен прочесть каждый, кто хочет однажды стать Senior Java Developer
Я приверженец второй группы: считаю, что книга действительно достойная, но читать ее для развития, а не с целью поиска какой-либо информации, очень сложно.
Важно: примеры в книге написаны на С++.
Паттерны проектирования на JavaRush
- Общая статья на тему паттернов с категориями, примерами, все как мы любим.
- Две статьи по паттернам: часть 1 обзорная и более подробная часть 2.
- Паттерны проектирования на примере шаблона Singleton.
- Статьи про паттерн “Стратегия” и “Адаптер”.
- Понятие паттернов проектирования связано с UML-диаграммами, эта статья поможет разобраться что это такое.