Оглавление книги.
1. Добро пожаловать в мир паттернов.
Приложение SimUDuck 38
Джо думает о наследовании... 41
Как насчет интерфейса? 42
Единственная константа в программировании 44
Отделяем переменное от постоянного 46
Реализация поведения уток 49
Тестирование кода Duck 54
Динамическое изменение поведения 56
Инкапсуляция поведения: общая картина 58
Отношения СОДЕРЖИТ бывают удобнее отношений ЯВЛЯЕТСЯ 59
Паттерн Стратегия 60
Сила единой номенклатуры 64
Как пользоваться паттернами? 65
Новые инструменты 68
Ответы к упражнениям 69
2. Объекты в курсе событий.
Приложение Weather Monitoring 73
Знакомство с паттерном Наблюдатель 78
Издатели + Подписчики = Паттерн Наблюдатель 79
Пятиминутная драма: субъект для наблюдения 82
Определение паттерна Наблюдатель 85
Сила слабых связей 87
Проектирование Weather Station 90
Реализация Weather Station 91
Встроенная реализация в языке Java 98
Темная сторона java.util.Observable 105
Новые инструменты 108
Ответы к упражнениям 110
3. Украшение объектов.
Добро пожаловать в Starbuzz 112
Принцип открытости/закрытости 118
Знакомство с паттерном Декоратор 120
Построение заказанного напитка 121
Определение паттерна Декоратор 123
Декораторы и напитки 124
Пишем код для Starbuzz 127
Декораторы в реальном мире: ввод/вывод в языке Java 132
Написание собственного декоратора ввода/вывода 134
Новые инструменты 137
Ответы к упражнениям 138
4. Домашняя ОО-выпечка.
Видим new— подразумеваем конкретный 142
Пицца Объектвиля 144
Инкапсуляция создания объектов 146
Построение Простой Фабрики для пиццы 147
Определение Простой Фабрики 149
Инфраструктура для пиццерии 152
Принятие решений в субклассах 153
Субклассы PizzaStore 155
Объявление Фабричного Метода 157
Пора познакомиться с паттерном Фабричный Метод 163
Параллельные иерархии классов 164
Определение паттерна Фабричный Метод 166
PizzaStore с сильными зависимостями 169
Зависимости между объектами 170
Принцип инверсии зависимостей 171
Вернемся в пиццерию... 176
Семейства ингредиентов... 177
Построение фабрик ингредиентов 178
Рассмотрим Абстрактную Фабрику 185
За сценой 186
Определение паттерна Абстрактная Фабрика 188
Сравнение паттернов Фабричный Метод и Абстрактная Фабрика 192
Новые инструменты 194
Ответы к упражнениям 195
5. Уникальные объекты.
Единственный и неповторимый 200
Вопросы и ответы 201
Классическая реализация паттерна Одиночка 203
Признания Одиночки 204
Шоколадная фабрика 205
Определение паттерна Одиночка 207
Кажется, у нас проблемы... 208
Представьте, что вы — JVM 209
Решение проблемы многопоточного доступа 210
Одиночка. Вопросы и ответы 214
Новые инструменты 216
Ответы к упражнениям 217
6. Инкапсуляция вызова.
Автоматизируй дом или проиграешь 220
Пульт домашней автоматизации 221
Классы управления устройствами 222
Краткое введение в паттерн Команда 225
Рассмотрим взаимодействия чуть более подробно... 226
Роли и обязанности в кафе Объектвиля 227
От кафе к паттерну Команда 229
Наш первый объект команды 231
Определение паттерна Команда 234
Связывание команд с ячейками 237
Реализация пульта 238
Проверяем пульт в деле 240
Пора писать документацию... 243
Реализация отмены с состоянием 248
На каждом пульте должен быть Режим Вечеринки! 252
Использование макрокоманд 253
Расширенные возможности паттерна Команда: очереди запросов 256
Расширенные возможности паттерна Команда: регистрация запросов 257
Новые инструменты 258
Ответы к упражнениям 259
7. Умение приспосабливаться.
Адаптеры вокруг нас 262
Объектно-ориентированные адаптеры 263
Как работает паттерн Адаптер 267
Определение паттерна Адаптер 269
Адаптеры объектов и классов 270
Беседа у камина: Адаптер объектов и Адаптер классов 273
Практическое применение адаптеров 274
Адаптация перечисления к итератору 275
Беседа у камина: паттерн Декоратор и паттерн Адаптер 278
Домашний кинотеатр 281
Свет, камера, фасад! 284
Построение фасада для домашнего кинотеатра 287
Определение паттерна Фасад 290
Принцип минимальной информированности 291
Новые инструменты 296
Ответы к упражнениям 297
8. Инкапсуляция алгоритмов.
Кофе и чай (на языке Java) 301
Абстрактный кофе и чай 304
Продолжаем переработку... 305
Абстрагирование prepareRecipe() 306
Что мы сделали? 309
Паттерн Шаблонный Метод 310
Готовим чай... 311
Что дает Шаблонный Метод? 312
Определение паттерна Шаблонный Метод 313
Код под увеличительным стеклом 314
Перехватчики в паттерне Шаблонный Метод 316
Использование перехватчиков 317
Проверяем, как работает код 318
Голливудский принцип 320
Голливудский принцип и Шаблонный Метод 321
Шаблонные методы на практике 323
Сортировка на базе Шаблонного Метода 324
Сортируем уток... 325
Сравнение объектов Duck 326
Как сортируются объекты Duck 328
Шаблонный метод в JFrames 330
Аплеты 331
Беседа у камина: Шаблонный Метод и Стратегия 332
Новые инструменты 334
Ответы к упражнениям 335
9. Управляемые коллекции.
Бистро объединяется с блинной! 338
Сравниваем две реализации 340
Как инкапсулировать перебор элементов? 345
Паттерн Итератор 347
Добавление итератора в DinerMenu 348
Рассмотрим архитектуру 353
Интеграция с java.util.Iterator 355
Что нам это дает? 357
Определение паттерна Итератор 358
Принцип одной обязанности 361
Итераторы и коллекции 370
Итераторы и коллекции в Java 5 371
А когда мы уже торжествовали победу... 375
Определение паттерна Компоновщик 378
Проектирование меню с использованием паттерна Компоновщик 381
Реализация комбинационного меню 384
Возвращение к итераторам 390
Пустой итератор 394
Магия итераторов и композиций 396
Новые инструменты 401
Ответы к упражнениям 402
10. Состояние дел.
Работа с диаграммой состояния 407
Краткий курс конечных автоматов 408
Программирование 410
Кто бы сомневался... запрос на изменение! 414
Печальное СОСТОЯНИЕ дел... 416
Определение интерфейса State и классов 419
Реализация классов состояний 421
Переработка класса Gumball Machine 422
Определение паттерна Состояние 430
Состояние vs Стратегия 431
Проверка разумности 437
Чуть не забыли! 440
Новые инструменты 443
Ответы к упражнениям 444
11. Управление доступом к объектам.
Монитор и автомат с жевательной резинкой 450
Роль «удаленного заместителя» 454
RMI-тур 456
К удаленному заместителю GumballMachine 470
Удаленный заместитель. За сценой 478
Определение паттерна Заместитель 480
Знакомьтесь: Виртуальный Заместитель 482
Проектирование виртуального заместителя 484
Виртуальный заместитель. За сценой 490
Создание защитного заместителя средствами Java API 494
Пятиминутная драма: защита клиентов 498
Динамический заместитель 499
Разновидности заместителей 508
Новые инструменты 510
Ответы к упражнениям 511
12. Паттерны паттернов.
Совместная работа паттернов 518
И снова утки 519
Добавление Адаптера 522
Добавление Декоратора 524
Добавление Фабрики 526
Добавление Компоновщика и Итератора 531
Добавление Наблюдателя 534
И все вместе 541
Диаграмма классов с высоты утиного полета 542
Паттерны проектирования — ключ к МVC 544
МУС с точки зрения паттернов 548
Использование МVC для управления ритмом... 550
Модель 553
Представление 555
Контроллер 558
Анализ паттерна Стратегия 561
Адаптация модели 562
Можно переходить к HeartController 563
МVC и Веб 565
Паттерны проектирования и Модель 2 573
Новые инструменты 576
Ответы к упражнениям 577
13. Паттерны в реальном мире.
Руководство по использованию паттернов 594
Определение паттерна проектирования 595
Подробнее об определении паттерна проектирования 597
Да пребудет с вами Сила 598
Каталоги паттернов 599
Как создавать паттерны 602
Хотите создавать паттерны? 603
Классификация паттернов проектирования 605
Мыслить паттернами 610
Разум и паттерны 613
И не забудьте о единстве номенклатуры 615
Пять способов использования единой номенклатуры 616
Прогулка по Объектвилю с «Бандой Четырех» 617
Наше путешествие только начинается... 618
Другие ресурсы, посвященные паттернам 619
Разновидности паттернов 620
Антипаттерны и борьба со злом 622
Новые инструменты 624
Покидая Объектвиль... 625
Добавить комментарий