Особенности книги
Head first design patterns рассказывает нам, что такое паттерны, как ими пользоваться и как ими думать. Паттерн — это шаблон, универсальное решение для определенного набора задач. Паттерны проектирования — это, в свою очередь, часто используемые архитектурные решения, с помощью которых можно писать удобные и гибкие приложения. Разработчики по всему миру решают одинаковые задачи с одинаковыми подходами. Как говорится в аннотации, если вы не хотите изобретать велосипед, используйте готовые шаблоны (паттерны) проектирования, работе с которыми посвящена эта книга. Отдельно стоит отметить подачу материала: книги серии Head First славятся своей простотой и читаются на одном дыхании. “Паттерны проектирования” — не исключение. В ней также соблюдены ключевые принципы:- Наглядность
- Разговорный стиль изложения
- Большое количество иллюстраций
- Активное участие читателя
- Обращение к эмоциям
- Привлечение внимания читателя
Основная тема и ключевая мысль
“Наверняка вашу задачу кто-то уже решал” — так начинается первая глава книги, передавая весь смысл паттернов проектирования в программировании. Основная цель — правильно донести читателю их смысл, ведь в первую очередь программист должен знать, для чего нужны паттерны и в какой момент их необходимо применить. По сути, сначала шаблоны нужно разложить по полочкам у себя в голове, и только после этого внедрять их в программы. Если новичок в программировании разбирается в паттернах “на троечку”, их использование может сильно усложнить код (а должно упрощать!). На вопрос “Почему следует применять паттерны проектирования?” книга дает однозначный ответ: “Знание таких концепций, как абстракция, наследование и полиморфизм, еще не делает из вас хорошего ОО-проектировщика. Паттерны содержат проверенный опыт ОО-проектирования.”“Краткое изложение”
Книга поделена на 14 глав плюс введение. В начале авторы книги стараются подготовить читателя, настроить его мозг на правильное восприятие информации о дизайне паттернов. Первая глава объясняет основной принцип паттернов, а также то, для каких целей они служат. Легко и ненавязчиво рассматривается один из наиболее используемых паттернов — стратегия. Главы со второй по одиннадцатую посвящены подробному разбору отдельных паттернов:- Наблюдатель. Распространяет по объектам события, которые заинтересованы в их наступлении.
- Декоратор. Другой взгляд на наследование в Java и наделение классов Java новыми возможностями без модификации кода.
- Фабрика. Паттерн спасает код от нежелательных зависимостей.
- Одиночка. Также известный как Singleton, позволяет создавать единственный на всю программу объект класса.
- Команда. Паттерн позволяет удобно инкапсулировать вызов метода, расширяя возможности.
- Адаптер и Фасад. Решение проблемы несовместимости интерфейсов, а также упаковка объектов для упрощения их интерфейса.
- Шаблонный метод. Инкапсулирование алгоритмических блоков, позволяющее субклассам в любой момент связываться с нужным алгоритмом обработки.
- Итератор и Компоновщик. Паттерн предоставляет удобный инструмент перебора коллекций вне зависимости от их типа. Дополнительно в главе дается порция информации о суперколлекциях.
- Состояние. Объекты наделяются способностью управлять своим поведением через изменение внутреннего состояния.
- Заместитель. Очень удобный паттерн для управления доступом к объекту.
Достоинства и недостатки
Я, как и многие из тех, кто учится на JavaRush, холодно отношусь к скучноватым лекциям, зубрежке материала и прочему насилию над психикой ученика, жаждущего знаний. Силы, потраченные на заучивание непонятных текстов, на мой взгляд, лучше всего направить на поиск альтернативных источников обучения. Эта книга — одна из тех, на которую стоит потратить свое время и усилия. Отличный стиль изложения, грамотное управление вниманием читателя, повторяемость ключевых моментов формируют главное достоинство этой книги — легкость усвоения материала. Большое количество иллюстраций — дополнительный плюс. На мой взгляд, в книге каждая картинка на своем месте: все они позволяют усилить слова авторов и глубже понять суть материала. Как я уже писал выше, эта книга — не справочник: у ее авторов нет цели перечислить все паттерны. Ее главная задача — дать понимание и рассказать об основных шаблонах, чтобы остальные, более сложные, воспринимались легче. И с этим она справляется на все 100%. Среди недостатков можно выделить то, что Head first design patterns на русском читается не так гладко, как на английском. Конечно же, каждый разработчик должен владеть английским, но у начинающих программистов этот навык не всегда прокачан до такой степени, чтобы читать книги в оригинале. Тем не менее, это можно считать натянутым минусом, так как материал подается достаточно точно и смысл сохраняется.Дополнительные книги по паттернам проектирования
Я сторонник убеждения, что фундаментальные темы лучше изучать по нескольким источникам и искать в них подходящий для себя стиль подачи. Когда захотите погрузиться в паттерны и почитать дополнительную теорию, поверьте, вам будет, чем занять свои вечера.Приемы объектно-ориентированного проектирования. Паттерны проектирования (Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж.).
Это более серьезное издание, справочник паттернов, очень уважаемая книга от “Банды четырех”. Многие называют ее библией ОО-проектирования.
В сети мнения разработчиков делятся на 3 лагеря:
- одни утверждают, что книга устарела, и из-за стиля изложения читать ее невозможно
- другие рекомендуют использовать книгу исключительно как справочник по паттернам, не более
- третьи говорят, что книга — святой грааль паттернов проектирования, и ее должен прочесть каждый, кто хочет однажды стать Senior Java Developer
Важно: примеры в книге написаны на С++.
Java EE. Паттерны проектирования для профессионалов (Мурат Йенер, Алекс Фидом).
Эта книга посвящена проектированию Enterprise-приложений: в ней рассматривается множество примеров реальных прикладных задач.
Шаблоны проектирования в Java (Гранд М.).
В книге красочно демонстрируется, как применение шаблонов экономит время разработчиков, приведен обзор языка UML и описано 47 шаблонов проектирования.
Паттерны проектирования на JavaRush
В курсе JavaRush паттерны проектирования изучаются на уровне 7 квеста Java Collections. Лекции 1 и 2 посвящены самым распространенным шаблонам, а в лекции 4 можно порешать задачки по этой теме. Ниже — несколько интересных статей, чтобы “усилиться”:Общая статья на тему паттернов с категориями, примерами, все как мы любим.
Две статьи по паттернам: часть 1 обзорная и более подробная часть 2.
Паттерны проектирования на примере шаблона Singleton.
Понятие паттернов проектирования связано с UML-диаграммами, эта статья поможет разобраться что это такое.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ