Название: Приемы объектно - ориентированного проектирования - Паттерны проектирования.
Автор: Гамма Э., Хелм Р., Джонсон Р.
2001.
В предлагаемой книге описываются простые и изящные решения типичных задач, возникающих в объектно-ориентированном проектировании. Паттерны появились потому, что многие разработчики искали пути повышения гибкости и степени повторного использования своих программ. Найденные решения воплощены в краткой и легко применимой на практике форме. Авторы излагают принципы использования паттернов проектирования и приводят их каталог. Таким образом, книга одновременно решает две задачи. Во-первых, здесь демонстрируется роль паттернов в создании архитектуры сложных систем. Во-вторых, применяя содержащиеся в справочнике паттерны, проектировщик сможет с легкостью разрабатывать собственные приложения.
Содержание
Предисловие. 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
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
Паттерн 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
Приложение А. Глоссарий. 341
Приложение В. Объяснение нотации. 344
8.1. Диаграмма классов. 344
8.2. Диаграмма объектов. 345
8.3. Диаграмма взаимодействий. 346
Приложение С. Базовые классы. 348
С. 1. List. 348
С.2. Iterator. 350
С.З. Listlterator. 350
С.4. Point. 351
С.5. Rect. 351
Библиография. 353
Алфавитный указатель.
Наследование и композиция.
Два наиболее распространенных приема повторного использования функциональности в объектно-ориентированных системах - это наследование класса и композиция объектов. Как мы уже объясняли, наследование класса позволяет определить реализацию одного класса в терминах другого. Повторное использование за счет порождения подкласса называют еще прозрачным ящиком (white-" box reuse). Такой термин подчеркивает, что внутреннее устройство родительских классов видимо подклассам.
Композиция объектов - это альтернатива наследованию класса. В этом случае новую, более сложную функциональность мы получаем путем объединения или композиции объектов. Для композиции требуется, чтобы объединяемые объекты имели четко определенные интерфейсы. Такой способ повторного использования называют черным ящиком (black-box reuse), поскольку детали внутреннего устройства объектов остаются скрытыми.
Купить книгу - Приемы объектно - ориентированного проектирования - Паттерны проектирования - Гамма Э., Хелм Р., Джонсон Р.
Купить книгу - Приемы объектно - ориентированного проектирования - Паттерны проектирования - Гамма Э., Хелм Р., Джонсон Р.
Теги: книга по программированию :: объектно-ориентированного проектирования :: Гамма :: Хелм
Смотрите также учебники, книги и учебные материалы:
- Занимательное программирование, самоучитель, Мозговой М.
- Как стать хакером - Левин М.
- Самоучитель Visual C++ .NET - Николай Секунов
- Стандартизация разработки программных средств - Благодатских В.А., Волнин В.А., Поскакалов К.Ф.
- Программирование в среде Visual Basic for Applications - Демидова Л.А., Пылькин А.Н.
- Программирование графики для Windows - Фень Юань
- Наиболее эффективное использование C++ - 35 новых рекомендаций по улучшению ваших программ и проектов - Мейерс С.
- C++Builder 6, справочное пособие, книга 2, Классы и компоненты - Архангельский А.Я.