Серед людей, які хоча б мінімально знайомі із серією Head First, є чимало тих, хто вважає подібну літературу досить поверховим чтивом для новачків. Що сказати, глибоко вивчити складну тему в галузі програмування за 48 годин навряд чи вийде.
Однак складно посперечатися, що книга "Паттерни проєктування" — книга, яка буде корисним посібником з програмування для початківців. Ця книга входить до десятки найпопулярніших на Stackoverflow, і небезпідставно. Легкість подачі, фундаментальна тема та якісні приклади роблять книгу затребуваною і зараз і, як на мене, ще протягом багатьох років.
Особливості книги
Head first design patterns розповідає нам, що таке патерни, як ними користуватися та як ними думати. Паттерн — це шаблон, універсальне рішення для певного набору завдань. Паттерни проєктування — це, у свою чергу, архітектурні рішення, що часто використовуються, за допомогою яких можна писати зручні і гнучкі додатки. Розробники у всьому світі вирішують однакові завдання з однаковими підходами. Як говориться в інструкції, якщо ви не бажаєте винаходити велосипед, використовуйте готові шаблони (патерни) проєктування, роботі з якими присвячена ця книга. Окремо варто відзначити подачу матеріалу: книги серії Head First славляться простотою і читаються на одному диханні. "Паттерни проєктування" — не виняток. У ній також дотримано ключових принципів:- Наочність
- Розмовний стиль викладу
- Велика кількість ілюстрацій
- Активна участь читача
- Звернення до емоцій
- Привернення уваги читача
Основна тема та ключова думка
"Напевно, ваше завдання хтось вже вирішував" — так починається перший розділ книги, передаючи весь сенс патернів проєктування в програмуванні. Основна мета — правильно донести читачеві їхній зміст, адже насамперед програміст повинен знати, для чого потрібні патерни і в якийсь момент їх необхідно застосувати. По суті, спочатку шаблони потрібно розкласти по поличках у себе в голові, і лише після цього впроваджувати їх у програми. Якщо новачок у програмуванні розуміється на патернах “на трієчку”, їх використання може сильно ускладнити код (а має спрощувати!). На питання "Чому слід застосовувати патерни проєктування?"книга дає однозначну відповідь: “Знання таких концепцій, як абстракція, наслідування та поліморфізм, ще не робить із вас хорошого проєктувальника. Паттерни містять перевірений досвід проєктування.”"Короткий виклад"
Книга поділена на 14 розділів плюс вступ. Спочатку автори книги намагаються підготувати читача, налаштувати його мозок на правильне сприйняття інформації про дизайн патернів. Перший розділ пояснює основний принцип патернів, а також те, для яких цілей вони служать. Легко і ненав'язливо розглядається один із найбільш застосовуваних патернів — стратегія. Розділи з другої по одинадцяту присвячені докладному розбору окремих патернів:- Спостерігач. Розповсюджує по об'єктах події, які зацікавлені у їхньому настанні.
- Декоратор. Інший погляд на успадкування Java і наділення класів Java новими можливостями без модифікації коду.
- Фабрика. Паттерн рятує код від небажаних залежностей.
- Одинак. Також відомий як Singleton дозволяє створювати єдиний на всю програму об'єкт класу.
- Команда. Паттерн дає змогу зручно інкапсулювати виклик методу, розширюючи можливості.
- Адаптер та Фасад. Вирішення проблеми несумісності інтерфейсів, а також упаковка об'єктів для спрощення їхнього інтерфейсу.
- Шаблонний метод. Інкапсулювання алгоритмічних блоків, що дозволяє субкласам будь-якої миті зв'язуватися з потрібним алгоритмом обробки.
- Ітератор та Компонувальник. Паттерн надає зручний інструмент для перебору колекцій незалежно від їх типу. Додатково у розділі дається порція інформації про суперколекції.
- Стан. Об'єкти наділяються здатністю керувати своєю поведінкою через зміну внутрішнього стану.
- Заступник Дуже зручний патерн для керування доступом до об'єкта.
Переваги й недоліки
Я, як і багато хто з тих, хто навчається на JavaRush, холодно ставлюся до нудних лекцій, зубріння матеріалу та іншого насильства над психікою учня, який прагне знань. Час, витрачений на заучування незрозумілих текстів, як на мене, найкраще спрямувати на пошук альтернативних джерел навчання. Ця книга — одна з тих, на яку варто витратити свій час та зусилля. Відмінний стиль викладу, грамотне керування увагою читача, повторюваність ключових моментів формують головну перевагу цієї книги – легкість засвоєння матеріалу. Велика кількість ілюстрацій – додатковий плюс. На мій погляд, у книзі кожна картинка на своєму місці: всі вони дозволяють проілюструвати слова авторів та глибше зрозуміти суть матеріалу. Як я вже писав вище, ця книга — не довідник: її автори не мають на меті перерахувати всі патерни. Її головне завдання — дати розуміння та розповісти про основні шаблони, щоб інші, складніші, сприймалися легше. І з цим вона справляється на всі 100%. Серед недоліків можна виділити те, що Head first design patterns у перекладі читається не так гладко, як англійською. Звичайно ж, кожен розробник повинен володіти англійською, але у програмістів-початківців ця навичка не завжди прокачана до такого ступеня, щоб читати книги в оригіналі. Тим не менш, це можна вважати натягнутим мінусом, тому що матеріал подається досить точно і зміст зберігається.Додаткові книги про патерни проєктування
Я прихильник думки, що фундаментальні теми краще вивчати з кількох джерел і шукати в них відповідний стиль подачі. Коли захочете поринути в патерни і почитати додаткову теорію, повірте, вам буде чим зайняти свої вечори.- Design patterns: elements of reusable object-oriented software (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides).
Це серйозніше видання, довідник патернів, дуже шанована книга від "Банди чотирьох". Багато хто називає її біблією проєктування. У мережі думки розробників діляться на 3 табори:- одні стверджують, що книга застаріла, і через стиль викладу читати її неможливо
- інші рекомендують використовувати книгу виключно як довідник з патернів, не більше
- треті кажуть, що книга — святий грааль патернів проєктування, і її має прочитати кожен, хто хоче якось стати Senior Java Developer
Важливо:приклади у книзі написані на С++. - Professional Java EE Design Patterns (Murat Yener, Alex Theedom).
Ця книга присвячена проєктуванню Enterprise-додатків: у ній розглядається безліч прикладів реальних прикладних завдань. - Java Enterprise Design Patterns: Patterns in Java (Mark Grand).
У книзі яскраво демонструється, як застосування шаблонів заощаджує час розробників, наведено огляд мови UML та описано 47 шаблонів проєктування
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ