В мире постоянно кто-то сталкивается с такими же проблемами программирования, которые возникают и у вас. Многие разработчики решают совершенно идентичные задачи и находят похожие решения. Если вы не хотите изобретать велосипед, используйте готовые шаблоны (паттерны) проектирования, работе с которыми посвящена эта книга. Паттерны появились, потому что многие разработчики искали пути повышения гибкости и степени повторного использования своих программ. Найденные решения воплощены в краткой и легко применимой на практике форме. Особенностью данного издания является уникальный способ подачи материала, выделяющий серию "Head First" издательства O'Reilly в ряду множества скучных книг, посвященных программированию. Книга будет интересна широкому кругу веб-разработчиков, от начинающих до профессионалов, желающих освоить работу с паттернами проектирования.
Название: Паттерны проектирования Автор: Э. Фримен, Э. Фримен, К. Сьерра, Б. Бейтс Издательство: Питер Год: 2011 Страниц: 647 Формат: DJVU Размер: 31,3 МБ ISBN: 978-5-459-00435-9 Качество: Отличное
Содержание:
Введение Для кого написана эта книга? Мы знаем, о чем вы думаете Метапознание Заставь свой мозг повиноваться Технические рецензенты Благодарности 1 Добро пожаловать в мир паттернов: знакомство с паттернами Приложение SimUDuck Джо думает о наследовании... Как насчет интерфейса? Единственная константа в программировании Отделяем переменное от постоянного Реализация поведения уток Тестирование кода Duck Динамическое изменение поведения Инкапсуляция поведения: общая картина Отношения СОДЕРЖИТ бывают удобнее отношений ЯВЛЯЕТСЯ Паттерн Стратегия Сила единой номенклатуры Как пользоваться паттернами? Новые инструменты Ответы к упражнениям 2 Объекты в курсе событий: паттерн Наблюдатель Приложение Weather Monitoring Знакомство с паттерном Наблюдатель Издатели + Подписчики = Паттерн Наблюдатель Пятиминутная драма: субъект для наблюдения Определение паттерна Наблюдатель Сила слабых связей Проектирование Weather Station Реализация Weather Station Встроенная реализация в языке Java Темная сторона java.util.Observable Новые инструменты Ответы к упражнениям 3 Украшение объектов: паттерн Декоратор Добро пожаловать в Starbuzz Принцип открытости/закрытости Знакомство с паттерном Декоратор Построение заказанного напитка Определение паттерна Декоратор Декораторы и напитки Пишем код для Starbuzz Декораторы в реальном мире: ввод/вывод в языке Java Написание собственного декоратора ввода/вывода Новые инструменты Ответы к упражнениям 4 Домашняя ОО-выпечка: паттерн Фабрика Видим new - подразумеваем конкретный Пицца Объектвиля Инкапсуляция создания объектов Построение Простой Фабрики для пиццы Определение Простой Фабрики Инфраструктура для пиццерии Принятие решений в субклассах Субклассы PizzaStore Объявление Фабричного Метода Пора познакомиться с паттерном Фабричный Метод Параллельные иерархии классов Определение паттерна Фабричный Метод PizzaStore с сильными зависимостями Зависимости между объектами Принцип инверсии зависимостей Вернемся в пиццерию... Семейства ингредиентов... Построение фабрик ингредиентов Рассмотрим Абстрактную Фабрику За сценой Определение паттерна Абстрактная Фабрика Сравнение паттернов Фабричный Метод и Абстрактная Фабрика Новые инструменты Ответы к упражнениям 5 Уникальные объекты: паттерн Одиночка Единственный и неповторимый Вопросы и ответы Классическая реализация паттерна Одиночка Признания Одиночки Шоколадная фабрика Определение паттерна Одиночка Кажется, у нас проблемы... Представьте, что вы - JVM Решение проблемы многопоточного доступа Одиночка. Вопросы и ответы Новые инструменты Ответы к упражнениям 6 Инкапсуляция вызова: паттерн Команда Автоматизируй дом или проиграешь Пульт домашней автоматизации Классы управления устройствами Краткое введение в паттерн Команда Рассмотрим взаимодействия чуть более подробно... Роли и обязанности в кафе Объектвиля От кафе к паттерну Команда Наш первый объект команды Определение паттерна Команда Связывание команд с ячейками Реализация пульта Проверяем пульт в деле Пора писать документацию... Реализация отмены с состоянием На каждом пульте должен быть Режим Вечеринки! Использование макрокоманд Расширенные возможности паттерна Команда: очереди запросов Расширенные возможности паттерна Команда: регистрация запросов Новые инструменты Ответы к упражнениям 7 Умение приспосабливаться: паттерны Адаптер и Фасад Адаптеры вокруг нас Объектно-ориентированные адаптеры Как работает паттерн Адаптер Определение паттерна Адаптер Адаптеры объектов и классов Беседа у камина: Адаптер объектов и Адаптер классов Практическое применение адаптеров Адаптация перечисления к итератору Беседа у камина: паттерн Декоратор и паттерн Адаптер Домашний кинотеатр Свет, камера, фасад! Построение фасада для домашнего кинотеатра Определение паттерна Фасад Принцип минимальной информированности Новые инструменты Ответы к упражнениям 8 Инкапсуляция алгоритмов: паттерн Шаблонный Метод Кофе и чай (на языке Java) Абстрактный кофе и чай Продолжаем переработку... Абстрагирование prepareRecipe() Что мы сделали? Паттерн Шаблонный Метод Готовим чай... Что дает Шаблонный Метод? Определение паттерна Шаблонный Метод Код под увеличительным стеклом Перехватчики в паттерне Шаблонный Метод Использование перехватчиков Проверяем, как работает код Голливудский принцип Голливудский принцип и Шаблонный Метод Шаблонные методы на практике Сортировка на базе Шаблонного Метода Сортируем уток... Сравнение объектов Duck Как сортируются объекты Duck Шаблонный метод в JFrames Аплеты Беседа у камина: Шаблонный Метод и Стратегия Новые инструменты Ответы к упражнениям 9 Управляемые коллекции: паттерны Итератор и Компоновщик Бистро объединяется с блинной! Сравниваем две реализации Как инкапсулировать перебор элементов? Паттерн Итератор Добавление итератора в DinerMenu Рассмотрим архитектуру Интеграция с java.util.Iterator Что нам это дает? Определение паттерна Итератор Принцип одной обязанности Йтераторы и коллекции Итераторы и коллекции в Java 5 А когда мы уже торжествовали победу... Определение паттерна Компоновщик Проектирование меню с использованием паттерна Компоновщик Реализация комбинационного меню Возвращение к итераторам Пустой итератор Магия итераторов и композиций Новые инструменты Ответы к упражнениям 10 Состояние дел: паттерн Состояние Работа с диаграммой состояния Краткий курс конечных автоматов Программирование Кто бы сомневался... запрос на изменение! Печальное СОСТОЯНИЕ дел... Определение интерфейса State и классов Реализация классов состояний Переработка класса Gumball Machine Определение паттерна Состояние Состояние vs Стратегия Проверка разумности Чуть не забыли! Новые инструменты Ответы к упражнениям 11 Управление доступом к объектам: паттерн Заместитель Монитор и автомат с жевательной резинкой Роль «удаленного заместителя» RMI-тур К удаленному заместителю GumballMachine Удаленный заместитель. За сценой Определение паттерна Заместитель Знакомьтесь: Виртуальный Заместитель Проектирование виртуального заместителя Виртуальный заместитель. За сценой Создание защитного заместителя средствами Java API Пятиминутная драма: защита клиентов Динамический заместитель Разновидности заместителей Новые инструменты Ответы к упражнениям 12 Паттерны паттернов: составные паттерны Совместная работа паттернов И снова утки Добавление Адаптера Добавление Декоратора Добавление Фабрики Добавление Компоновщика и Итератора Добавление Наблюдателя И все вместе Диаграмма классов с высоты утиного полета Паттерны проектирования - ключ к MVC MVC с точки зрения паттернов Использование MVC для управления ритмом.. Модель Представление Контроллер Анализ паттерна Стратегия Адаптация модели Можно переходить к HeartController MVC и Веб Паттерны проектирования и Модель 2 Новые инструменты Ответы к упражнениям 13 Паттерны в реальном мире: паттерны для лучшей жизни Руководство по использованию паттернов Определение паттерна проектирования Подробнее об определении паттерна проектирования Да пребудет с вами Сила Каталоги паттернов Как создавать паттерны Хотите создавать паттерны? Классификация паттернов проектирования Мыслить паттернами Разум и паттерны И не забудьте о единстве номенклатуры Пять способов использования единой номенклатуры Прогулка по Объектвилю с «Бандой Четырех» Наше путешествие только начинается... Другие ресурсы, посвященные паттернам Разновидности паттернов Антипаттерны и борьба со злом Новые инструменты Покидая Объектвиль... 14 Приложение: другие паттерны Мост Строитель Цепочка Обязанностей Приспособленец Интерпретатор Посредник Хранитель Прототип Посетитель