Содержание
Предисловие ..................................................................................................... 10
Глава 1. Введение в паттерны проектирования ................................. 15
1.1. Что такое паттерн проектирования ....................................................... 16
1.2. Паттерны проектирования в схеме MVC в языке Smalltalk ................. 18
1.3. Описание паттернов проектирования .................................................. 20
1.4. Каталог паттернов проектирования ...................................................... 22
1.5. Организация каталога ............................................................................ 24
1.6. Как решать задачи проектирования с помощью паттернов ............. 25
Поиск подходящих объектов ........................................................................... 25
Определение степени детализации объекта .................................................... 27
Специфицирование интерфейсов объекта ....................................................... 27
Специфицирование реализации объектов ....................................................... 29
Механизмы повторного использования ........................................................... 32
Сравнение структур времени выполнения и времени компиляции ....................... 37
Проектирование с учетом будущих изменений ................................................. 38
1.7. Как выбирать паттерн проектирования ................................................ 43
1.8. Как пользоваться паттерном проектирования ..................................... 44
Глава 2. Проектирование редактора документов ........................... 46
2.1. Задачи проектирования .......................................................................... 46
2.2. Структура документа ............................................................................... 48
Рекурсивная композиция ................................................................................ 49
Глифы ........................................................................................................... 51
Паттерн компоновщик ................................................................................... 53
2.3. Форматирование ..................................................................................... 53
Инкапсуляция алгоритма форматирования ...................................................... 54
Классы Compositor и Composition ................................................................... 54
Стратегия ..................................................................................................... 56
2.4. Оформление пользовательского интерфейса ..................................... 56
Прозрачное обрамление ............................................................................... 57
Моноглиф ..................................................................................................... 58
Паттерн декоратор ....................................................................................... 60
2.5. Поддержка нескольких стандартов внешнего облика ........................ 60
Абстрагирование создания объекта ................................................................ 61
Фабрики и изготовленные классы ................................................................... 61
Паттерн абстрактная фабрика ....................................................................... 64
8 Приемы ООП
2.6. Поддержка нескольких оконных систем ................................................ 64
Можно ли воспользоваться абстрактной фабрикой? ........................................ 64
Инкапсуляция зависимостей от реализации ..................................................... 65
Классы Window и WindowImp ......................................................................... 67
Подклассы WindowImp .................................................................................. 68
Конфигурирование класса Window с помощью WindowImp .............................. 70
Паттерн мост ................................................................................................ 70
2.7. Операции пользователя .......................................................................... 71
Инкапсуляция запроса ................................................................................... 72
Класс Command и его подклассы .................................................................... 73
Отмена операций ......................................................................................... 74
История команд ............................................................................................ 75
Паттерн команда .......................................................................................... 76
2.8. Проверка правописания и расстановка переносов ........................... 76
Доступ к распределенной информации ........................................................... 77
Инкапсуляция доступа и порядка обхода ......................................................... 77
Класс Iterator и его подклассы ......................................................................... 78
Паттерн итератор ......................................................................................... 81
Обход и действия, выполняемые при обходе .................................................... 81
Класс Visitor и его подклассы .......................................................................... 86
Паттерн посетитель ....................................................................................... 87
2.9. Резюме ....................................................................................................... 88
Глава 3. Порождающие паттерны ........................................................... 89
Паттерн Abstract Factory ................................................................................. 93
Паттерн Builder .............................................................................................. 102
Паттерн Factory Method ............................................................................... 111
Паттерн Prototype .......................................................................................... 121
Паттерн Singleton .......................................................................................... 130
Обсуждение порождающих паттернов ...................................................... 138
Глава 4. Структурные паттерны .............................................................. 140
Паттерн Adapter ............................................................................................ 141
Паттерн Bridge ............................................................................................... 152
Паттерн Composite ........................................................................................ 162
Паттерн Decorator ......................................................................................... 173
Паттерн Facade ............................................................................................. 183
Паттерн Flyweight .......................................................................................... 191
Паттерн Proxy ................................................................................................. 203
Обсуждение структурных паттернов .......................................................... 213
Адаптер и мост ........................................................................................... 213
Компоновщик, декоратор и заместитель ........................................................ 214
Глава 5. Паттерны поведения .................................................................. 216
Паттерн Chain of Responsibility .................................................................... 217
Паттерн Command ........................................................................................ 227
Содержание 9
Паттерн Interpreter ........................................................................................ 236
Паттерн Iterator .............................................................................................. 249
Паттерн Mediator .......................................................................................... 263
Паттерн Memento .......................................................................................... 272
Паттерн Observer .......................................................................................... 280
Паттерн State .................................................................................................. 291
Паттерн Strategy ............................................................................................ 300
Паттерн Template Method ............................................................................ 309
Паттерн Visitor ................................................................................................ 314
Обсуждение паттернов поведения ............................................................. 328
Инкапсуляция вариаций ............................................................................... 328
Объекты как аргументы ................................................................................ 328
Должен ли обмен информацией быть инкапсулированным или распределенным ... 329
Разделение получателей и отправителей ....................................................... 330
Резюме ...................................................................................................... 332
Глава 6. Заключение .................................................................................... 333
6.1. Чего ожидать от паттернов проектирования ...................................... 333
Единый словарь проектирования .................................................................. 333
Помощь при документировании и изучении .................................................... 334
Дополнение существующих методов ............................................................. 334
Цель реорганизации .................................................................................... 335
6.2. Краткая история ...................................................................................... 336
6.3. Проектировщики паттернов ................................................................. 337
Языки паттернов Александра ........................................................................ 338
Паттерны в программном обеспечении ......................................................... 339
6.4. Приглашение ........................................................................................... 339
6.5. На прощание .......................................................................................... 340
Приложение A. Глоссарий ......................................................................... 341
Приложение B. Объяснение нотации ................................................... 344
B.1. Диаграмма классов ................................................................................ 344
B.2. Диаграмма объектов ............................................................................. 345
B.3. Диаграмма взаимодействий ................................................................. 346
Приложение C. Базовые классы ............................................................. 348
C.1. List ............................................................................................................. 348
C.2. Iterator ...................................................................................................... 350
C.3. ListIterator ................................................................................................. 350
C.4. Point .......................................................................................................... 351
C.5. Rect ........................................................................................................... 351
Библиография ................................................................................................. 353
Алфавитный указатель ................................................................................ 359