Глава 1. Порождающие паттерны проектирования в Python 16
1.1. Паттерн Абстрактная фабрика 161
1.1. Классическая Абстрактная фабрика 17
1.1.2. Абстрактная фабрика в духе Python 20
1.2. Паттерн Построитель 22
1.3. Паттерн Фабричный метод 28
1.4. Паттерн Прототип 37
1.5. Паттерн Одиночка 38
Глава 2. Структурные паттерны проектирования в Python 40
2.1. Паттерн Адаптер 40
2.2. Паттерн Мост 46
2.3. Паттерн Компоновщик 52
2.3.1. Классическая иерархия составных и несоставных объектов 53
2.3.2. Единый класс для составных и несоставных объектов 57
2.4. Паттерн Декоратор 60
2.4.1. Декораторы функций и методов 61
2.4.2. Декораторы классов 67
2.5. Паттерн Фасад 74
2.6. Паттерн Приспособленец 79
2.7. Паттерн Заместитель 82
Глава 3. Поведенческие паттерны проектирования в Python 88
3.1. Паттерн Цепочка ответственности 88
3.1.1. Традиционная Цепочка 89
3.1.2. Цепочка на основе сопрограмм 91
3.2. Паттерн Команда 95
3.3. Паттерн Интерпретатор 99
3.3.1. Вычисление выражения с помощью еуа1() 100
3.3.2. Исполнение кода с помощью ехес() 104
3.3.3. Исполнение кода в подпроцессе 107
3.4. Паттерн Итератор 112
3.4.1. Итераторы, следующие протоколу последовательности 112
3.4.2. Реализация итераторов с помощью функции iter() с двумя аргументами 113
3.4.3. Итераторы на базе протокола итераторов 115
3.5. Паттерн Посредник 118
3.5.1. Традиционный Посредник 119
3.5.2. Посредник на основе сопрограмм 123
3.6. Паттерн Хранитель 125
3.7. Паттерн Наблюдатель 125
3.8. Паттерн Состояние 130
3.8.1. Чувствительные к состоянию методы 133
3.8.2. Определяемые состоянием методы 135
3.9. Паттерн Стратегия 136
3.10. Паттерн Шаблонный метод 139
3.11. Паттерн Посетитель 142
3.12. Пример: пакет обработки изображений 144
3.12.1. Общий модуль обработки изображений 146
3.12.2. Обзор модуля Xpt 156
3.12.3. Модуль-обертка PNG 159
Глава 4. Высокоуровневый параллелизм в Python 162
4.1. Распараллеливание задач с большим объемом вычислений 166
4.1.1. Очереди и многопроцессная обработка 169
4.1.2. Будущие объекты и многопроцессная обработка 175
4.2. Распараллеливание задач, ограниченных скоростью ввода-вывода 178
4.2.1. Очереди и многопоточность 180
4.2.2. Будущие объекты и многопоточность 185
4.3. Пример: приложение с параллельным ГИП 188
4.3.1. Создание ГИП 190
4.3.2. Модуль ImageScaleWorker 198
4.3.3. Как ГИП обрабатывает продвижение 201
4.3.4. Как ГИП обрабатывает выход из программы 203
Глава 5. Расширение Python 205
5.1. Доступ к написанным на С библиотекам с помощью пакета ctypes 207
5.2. Использование Cython 215
5.2.1. Доступ к написанным на С библиотекам с помощью Cython 215
5.2.2. Создание Cython-модулей для повышения производительности 222
5.3. Пример: ускоренная версия пакета Image 228
Глава 6. Высокоуровневое сетевое программирование на Python 233
6.1. Создание приложений на базе технологии XML-RPC 234
6.1.1. Обертка данных 235
6.1.2. Разработка сервера XML-RPC 239
6.1.3. Разработка клиента XML-RPC 241
6.2. Создание приложений на базе технологии RPyC 251
6.2.1. Потокобезопасная обертка данных 251
6.2.2. Разработка сервера RPyC 257
6.2.3. Разработка клиента RPyC 260
Глава 7. Графические интерфейсы пользователя на Python и Tkinter 264
7.1. Введение в Tkinter 267
7.2. Создание диалоговых окон с помощью Tkinter 269
7.2.1. Создание диалогового приложения 271
7.2.2. Создание диалоговых окон в приложении 280
7.3. Создание приложений с главным окном с помощью Tkinter 290
7.3.1. Создание главного окна 292
7.3.2. Создание меню 294
7.3.3. Создание строки состояния с индикаторами 297
Глава 8. Трехмерная графика на Python с применением OpenGL 301
8.1. Сцена в перспективной проекции 303
8.1.1. Создание программы Cylinder с помощью PyOpenGL.304
8.1.2. Создание программы Cylinder с помощью pyglet 309
8.2. Игра в ортографической проекции 311
8.2.1. Рисование сцены с доской 314
8.2.2. Обработка выбора объекта на сцене 317
8.2.3. Обработка взаимодействия с пользователем 319
Приложение А. Эпилог 323
Приложение В. Краткая библиография 325
Предметный указатель 329
Добавить комментарий