Предисловие 
 
 Глава 1. Введение в паттерны проектирования 
   1.1. Что такое паттерн проектирования 
   1.2. Паттерны проектирования в схеме MVC в языке Smalltalk 
   1.3. Описание паттернов проектирования 
   1.4. Каталог паттернов проектирования 
   1.5. Организация каталога 
   1.6. Как решать задачи проектирования с помощью паттернов
      Поиск подходящих объектов 
      Определение степени детализации объекта 
      Специфицирование интерфейсов объекта 
      Специфицирование реализации объектов 
      Механизмы повторного использования 
      Сравнение структур времени выполнения и времени компиляции 
      Проектирование с учетом будущих изменений 
   1.7. Как выбирать паттерн проектирования 
   1.8. Как пользоваться паттерном проектирования 
 
 Глава 2. Проектирование редактора документов 
   2.1. Задачи проектирования 
   2.2. Структура документа 
      Рекурсивная композиция 
      Глифы 
      Паттерн компоновщик 
   2.3. Форматирование 
      Инкапсуляция алгоритма форматирования 
      Классы Compositor и Composition 
      Стратегия 
   2.4. Оформление пользовательского интерфейса 
      Прозрачное обрамление 
      Моноглиф 
      Паттерн декоратор 
   2.5. Поддержка нескольких стандартов внешнего облика 
      Абстрагирование создания объекта 
      Фабрики и изготовленные классы 
      Паттерн абстрактная фабрика 
   2.6. Поддержке нескольких оконных систем 
      Можно ли воспользоваться абстрактной фабрикой? 
      Инкапсуляция зависимостей от реализации 
      Классы Window и Windowlrnp 
      Подклассы Windowlrnp 
      Конфигурирование класса Window с помощью Windowlrnp 
      Паттерн мост 
   2.7. Операции пользователя 
      Инкапсуляция запроса 
      Класс Command и его подклассы 
      Отмена операций 
      История команд 
      Паттерн команда 
   2.8. Проверка правописания и расстановка переносов
      Доступ к распределенной информации 
      Инкапсуляция доступа и порядка обхода 
      Класс Iterator и его подклассы 
      Паттерн итератор 
      Обход и действия, выполняемые при обходе 
      Класс Visitor и его подклассы 
      Паттерн посетитель 
   2.9. Резюме 
 
 Глава 3. Порождающие паттерны 
   Паттерн Abstract Factory 
   Паттерн Builder 
   Паттерн Factory Method 
   Паттерн Prototype 
   Паттерн Singleton 
   Обсуждение порождающих паттернов 
 
 Глава 4. Структурные паттерны 
   Паттерн Adapter 
   Паттерн Bridge 
   Паттерн Composite 
   Паттерн Decorator 
   Паттерн Facade 
   Паттерн Flyweight 
   Паттерн Proxy 
   Обсуждение структурных паттернов 
      Адаптер и мост 
      Компоновщик, декоратор и заместитель 
 
 Глава 5. Паттерны поведения 
   Паттерн Chain of Responsibility 
   Паттерн Command 
   Паттерн Interpreter 
   Паттерн Iterator 
   Паттерн Mediator 
   Паттерн Memento 
   Паттерн Observer 
   Паттерн State 
   Паттерн Strategy 
   Паттерн Template Method 
   Паттерн Visitor 
   Обсуждение паттернов поведения 
      Инкапсуляция вариаций 
      Объекты как аргументы 
      Должен ли обмен информацией быть инкапсулированным или распределенным 
      Разделение получателей и отправителей 
      Резюме 
 
 Глава 6. Заключение 
   6.1. Чего ожидать от паттернов проектирования 
      Единый словарь проектирования 
      Помощь при документировании и изучении 
      Дополнение, существующих методов 
      Цель реорганизации 
   6.2. Краткая история 
   6.3. Проектировщики паттернов 
      Языки паттернов Александра 
      Паттерны в программном обеспечении 
   6.4. Приглашение 
   6.5. На прощание 
 
 Приложение А. Глоссарий 
 Приложение В. Объяснение нотации 
 B.1. Диаграмма классов 
 В.2. Диаграмма объектов 
 В.3. Диаграмма взаимодействий 
 Приложение С. Базовые классы 
 C.1. List 
 С.2. Iterator 
 С.З. Listlterator 
 С.4. Point 
 C.5. Rect 
 Библиография 
 Алфавитный указатель