Научный редактор Н. Шалаев Литературный редактор А. Петроградская Технический редактор С. Прока Иллюстрации А. Бахарев Художник Н. Биржаков Верстка Л. Пискунова ббк 32. 973. 2-018




НазваниеНаучный редактор Н. Шалаев Литературный редактор А. Петроградская Технический редактор С. Прока Иллюстрации А. Бахарев Художник Н. Биржаков Верстка Л. Пискунова ббк 32. 973. 2-018
страница1/54
Дата26.09.2012
Размер5.49 Mb.
ТипДокументы
  1   2   3   4   5   6   7   8   9   ...   54
Erich GammaRalph JohnsonRichard HelmJohn Vlissides


Design Patterns

Elements of Reusable

Object-Oriented Software


Addison-Wesley

An imprint of Addison Wesley Longman, Inc.

Reading, Masachusetts • Harlow, England • Menlo Park, California

Berkley, California • Don Mills, Ontario • Sydney

Bonn • Amsterdam • Tokyo • Mexico City


Э. ГаммаР. ХелмР. ДжонсонДж. Влиссидес


Приемы объектно-

ориентированного

проектирования

____________________________


паттерны проектирования


Санкт-Петербург

Москва • Харьков • Минск


2001

Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес


Приемы объектно-ориентированного проектирования

Паттерны проектирования


Перевел с английского А. Слинкин


Руководитель проекта И. Захаров

Научный редактор Н. Шалаев

Литературный редактор А. Петроградская

Технический редактор С. Прока

Иллюстрации А. Бахарев

Художник Н. Биржаков

Верстка Л. Пискунова


ББК 32.973.2-018

УДК 681.3.068


Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж.

П75 Приемы объектно-ориентированного проектирования. Паттерны проектирования. – СПб: Питер, 2001. – 368 с: ил. (Серия «Библиотека программиста»)


ISBN 5-272-00355-1


В предлагаемой книге описываются простые и изящные решения типичных задач, возникающих в объектно-ориентированном проектировании. Паттерны появились потому, что многие разработчики искали пути повышения гибкости и степени повторного использования своих программ. Найденные решения воплощены в краткой и легко применимой на практике форме. Авторы излагают принципы использования паттернов проектирования и приводят их каталог. Таким образом, книга одновременно решает две задачи. Во-первых, здесь демонстрируется роль паттернов в создании архитектуры сложных систем. Во-вторых, применяя содержащиеся в справочнике паттерны, проектировщик сможет с легкостью разрабатывать собственные приложения.

Издание предназначено как для профессиональных разработчиков, так и для программистов, осваивающих объектно-ориентированное проектирование.


Original English language Edition Copyright © 1995 by Addison Wesley Longman, Inc.

© Перевод на русский язык, А. Слинкин, 2001

©Серия, оформление. Издательский дом «Питер», 2001

Оригинал-макет подготовлен издательством «ДМК Пресс».


Права на издание получены по соглашению с Addison-Wesley Longman.

Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.

Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственность за возможные ошибки, связанные с использованием книги.


ISBN 5-272-00355-1

ISBN 0-201-63361-2 (англ.)


ЗАО «Питер Бук». 196105, Санкт-Петербург, Благодатная ул., д. 67.

Лицензия ИД № 01940 от 05.06.00.

Налоговая льгота – общероссийский классификатор продукции ОК 005-93, том 2; 953000 – книги и брошюры. Подписано в печать 08.10.00. Формат 70x100 Усл. п. л. 29,67. Тираж 5000 экз. Заказ № 1997.

Отпечатано с готовых диапозитивов в ГПП «Печатный двор» Министерства РФ по делам печати,

телерадиовещания и средств массовых коммуникаций.

197110, Санкт-Петербург, Чкаловский пр., 15.


Посвящается


Кэрин

– Э. Гамма


Сильвии

– Р. Хелм


Фейт

– Р. Джонсон


Дрю Энн и Мэттью Джошуа 24:15b

– Дж. Влиссидес


Отзывы на книгу «Design Patterns: Elements

of Reusable Object-Oriented Software»


Одна из самых хорошо написанных и глубоких книг, которые мне доводилось читать... эта работа доказывает необходимость паттернов самым правильным способом: не рассуждениями, а примерами.

Стэн Липпман, The C++ Report


...Новая книга Гаммы, Хелма, Джонсона и Влиссидеса окажет важное и продолжительное воздействие на науку проектирования программного обеспечения. Поскольку авторы преподносят свой труд как относящийся только к объектно-ориентированным программам, боюсь, что многие разработчики, не занимающиеся объектной проблематикой, могут не обратить на книгу внимания. Это будет большой ошибкой. На самом деле каждый, кто занимается проектированием программ, найдет здесь много интересного для себя. Все проектировщики применяют паттерны, поэтому более глубокое понимание повторно используемых абстракций лишь пойдет нам на пользу.

Том ДеМарко, IEEE Software


Полагаю, что книга чрезвычайно ценна, поскольку описывает богатейший опыт объектно-ориентированного проектирования, изложенный в компактной, удобной для многократного применения форме. Безусловно, я снова и снова буду обращаться к идеям, представленным в издании, а ведь именно в этом и состоит суть повторного использования, не так ли?

Санджив Госсайн, Journal of Object-Oriented Programming


Эта книга, столь давно ожидаемая, полностью оправдала все предшествовавшие ей рекламные посулы. Она подобна справочнику архитектора, в котором приведены проверенные временем, испытанные на практике приемы и методы проектирования. Всего авторы отобрали 23 паттерна. Подарите экземпляр этой книги каждому из своих знакомых программистов, желающему усовершенствоваться в своей профессии.

Ларри О'Брайен, Software Development


Следует признать, что паттерны могут полностью изменить подходы к инженерному проектированию программ, привнеся в эту область изящество по-настоящему элегантного дизайна. Из всех имеющихся книг на эту тему «Паттерны проектирования», безусловно, лучшая. Ее следует читать, изучать и переводить на другие языки. Она раз и навсегда изменит ваш взгляд на программное обеспечение.

Стив Билов, Journal of Object-Oriented Programming


«Паттерны проектирования» – замечательная книга. Потратив на ее чтение сравнительно немного времени, большинство программистов на языке C++ смогут начать применять паттерны в своей работе, что улучшит качество создаваемых ими программ. Эта книга передает в наше распоряжение конкретные инструменты, помогающие более эффективно мыслить и выражать свои идеи. Она может фундаментально изменить ваш взгляд на программирование.

Том Каргилл, The C++ Report


СОДЕРЖАНИЕ


Предисловие 10

Глава 1. Введение в паттерны проектирования 15

1.1. Что такое паттерн проектирования 16

1.2. Паттерны проектирования в схеме MVC в языке Smalltalk 17

1.3. Описание паттернов проектирования 19

1.4. Каталог паттернов проектирования 21

1.5. Организация каталога 23

1.6. Как решать задачи проектирования с помощью паттернов 25

Поиск подходящих объектов 25

Определение степени детализации объекта 26

Специфицирование интерфейсов объекта 26

Специфицирование реализации объектов 27

Механизмы повторного использования 30

Сравнение структур времени выполнения и времени компиляции 34

Проектирование с учетом будущих изменений 35

1.7. Как выбирать паттерн проектирования 39

1.8. Как пользоваться паттерном проектирования 40

Глава 2. Проектирование редактора документов 43

2.1. Задачи проектирования 43

2.2. Структура документа 45

Рекурсивная композиция 46

Глифы 47

Паттерн компоновщик 49

2.3. Форматирование 49

Инкапсуляция алгоритма форматирования 50

Классы Compositor и Composition 50

Стратегия 52

2.4. Оформление пользовательского интерфейса 52

Прозрачное обрамление 52

Моноглиф 53

Паттерн декоратор 55

2.5. Поддержка нескольких стандартов внешнего облика 56

Абстрагирование создания объекта 56

Фабрики и изготовленные классы 57

Паттерн абстрактная фабрика 59

2.6. Поддержка нескольких оконных систем 59

Можно ли воспользоваться абстрактной фабрикой? 60

Инкапсуляция зависимостей от реализации 60

Классы Window и WindowImp 62

Подклассы WindowImp 63

Конфигурирование класса Window с помощью WindowImp 64

Паттерн мост 65

2.7. Операции пользователя 66

Инкапсуляция запроса 67

Класс Command и его подклассы 68

Отмена операций 69

История команд 69

Паттерн команда 70

2.8. Проверка правописания и расстановка переносов 70

Доступ к распределенной информации 71

Инкапсуляция доступа и порядка обхода 71

Класс Iterator и его подклассы 73

Паттерн итератор 75

Обход, и действия выполняемые при обходе 75

Класс Visitor и его подклассы 79

Паттерн посетитель 80

2.9. Резюме 81

Глава 3. Порождающие паттерны 83

Паттерн Abstract Factory 87

Паттерн Builder 95

Паттерн Factory Method 103

Паттерн Prototype 112

Паттерн Singleton 121

Обсуждение порождающих паттернов 127

Глава 4. Структурные паттерны 129

Паттерн Adapter 130

Паттерн Bridge 140

Паттерн Composite 149

Паттерн Decorator 159

Паттерн Facade 168

Паттерн Flyweight 176

Паттерн Proxy 186

Обсуждение структурных паттернов 196

Адаптер и мост 196

Компоновщик, декоратор и заместитель 197

Глава 5. Паттерны поведения 200

Паттерн Chain of Responsibility 200

Паттерн Command 209

Паттерн Interpreter 219

Паттерн Iterator 230

Паттерн Mediator 243

Паттерн Memento 252

Паттерн Observer 260

Паттерн State 269

Паттерн Strategy 278

Паттерн Template Method 286

Паттерн Visitor 290

Обсуждение паттернов поведения 303

Инкапсуляция вариаций 303

Объекты как аргументы 303

Должен ли обмен информацией быть инкапсулированным или распределенным 304

Разделение получателей и отправителей 304

Резюме 306

Глава 6. Заключение 308

6.1. Чего ожидать от паттернов проектирования 308

Единый словарь проектирования 308

Помощь при документировании и изучении 309

Дополнение существующих методов 309

Цель реорганизации 310

6.2. Краткая история 311

6.3. Проектировщики паттернов 312

Языки паттернов Александра 312

Паттерны в программном обеспечении 313

6.4. Приглашение 313

6.5. На прощание 314

Приложение А. Глоссарий 316

Приложение В. Объяснение нотации 320

В.1. Диаграмма классов 320

В.2. Диаграмма объектов 321

В.3. Диаграмма взаимодействий 322

Приложение С. Базовые классы 324

C.1. List 324

С.2. Iterator 327

С.З. ListIterator 327

С.4. Point 327

С.5. Rect 328

Библиография 331

Алфавитный указатель 337





  1   2   3   4   5   6   7   8   9   ...   54

Похожие:

Научный редактор Н. Шалаев Литературный редактор А. Петроградская Технический редактор С. Прока Иллюстрации А. Бахарев Художник Н. Биржаков Верстка Л. Пискунова ббк 32. 973. 2-018 iconНаучный консультант Художник Корректоры М. Дизайн Верстка > В. Усманов М. Чураков А. Зайцев В. Попов В. Лоскутов В. Королева Рошаль, Е. Шнитникова Н. Мигаловская А. Рапопорт ббк 88. 352. 1
Главный редактор Зав гуманитарной редакцией Зав психологической редакцией Ведущий редактор Научный консультант Художник
Научный редактор Н. Шалаев Литературный редактор А. Петроградская Технический редактор С. Прока Иллюстрации А. Бахарев Художник Н. Биржаков Верстка Л. Пискунова ббк 32. 973. 2-018 iconСолодов С. В. Филиппов Главный редактор-администратор В. Д. Соловьев Главный научный редактор П. А. Кротов Технический редактор И. Е. Прозоров Художник А. А. Брынза Макет, верстка Г. В. Губенкова
Зарегистрирован Управлением Федеральной службы по надзору в сфере связи, инфор­мационных технологий и массовых коммуникаций по Санкт-Петербургу...
Научный редактор Н. Шалаев Литературный редактор А. Петроградская Технический редактор С. Прока Иллюстрации А. Бахарев Художник Н. Биржаков Верстка Л. Пискунова ббк 32. 973. 2-018 iconПрактикум по конфликтологии 2-е издание, дополненное и переработанное
Главный редактор Заведующий редакцией Руководитель проекта Литературный редактор Художественный редактор Корректор Верстка
Научный редактор Н. Шалаев Литературный редактор А. Петроградская Технический редактор С. Прока Иллюстрации А. Бахарев Художник Н. Биржаков Верстка Л. Пискунова ббк 32. 973. 2-018 iconХудожник обложки Корректоры Верстка Е. Строганова Л. Винокуров Е. Цветкова А. Борин С. Маликова Т. Брылёва, М. Одинокова А. Борин ббк 88. 43
Главный редактор Заведующий редакцией Руководитель проекта Ведущий редактор Художник обложки Корректоры Верстка
Научный редактор Н. Шалаев Литературный редактор А. Петроградская Технический редактор С. Прока Иллюстрации А. Бахарев Художник Н. Биржаков Верстка Л. Пискунова ббк 32. 973. 2-018 iconГлавный редактор Зав психологической редакцией Зам зав психологической редакцией Ведущий редактор Редактор Художник обложки Корректор Верстка ббк 88. 35я7
Учебное пособие предназначено для психологов, психофизиологов, педагогов, а также для студентов и аспирантов психологических и педагогических...
Научный редактор Н. Шалаев Литературный редактор А. Петроградская Технический редактор С. Прока Иллюстрации А. Бахарев Художник Н. Биржаков Верстка Л. Пискунова ббк 32. 973. 2-018 iconХудожник обложки Корректор Верстка Е. Строганова А. Зайцев И. Карпова А. Борин Е. Дандарова К. Радзевич Н. Устинова И. Смарышева ббк 88. 53
Заведующий психологической редакцией Зам зав психологической редакцией Ведущий редактор Редактор
Научный редактор Н. Шалаев Литературный редактор А. Петроградская Технический редактор С. Прока Иллюстрации А. Бахарев Художник Н. Биржаков Верстка Л. Пискунова ббк 32. 973. 2-018 iconВ попов Ведущий редактор а борин Научный редактор э эидеиилпер Редамор в попов Художник обложки в шимкевич Корректор 1 Бршева Верстка н марчеикова ббк53 57
Теориям практика семейной психотерапии —СПб Питер, 2001 —352 с ил—(Серия «Золотой фонд психотерапии»)
Научный редактор Н. Шалаев Литературный редактор А. Петроградская Технический редактор С. Прока Иллюстрации А. Бахарев Художник Н. Биржаков Верстка Л. Пискунова ббк 32. 973. 2-018 iconС. М. Гинц. Художник Н. Н. Моос. Художественный редактор М. В. Тарасова. Технический редактор Г. А. Калашникова. Корректор Л. К. Пономарева. Подписано к печати 22/VI

Научный редактор Н. Шалаев Литературный редактор А. Петроградская Технический редактор С. Прока Иллюстрации А. Бахарев Художник Н. Биржаков Верстка Л. Пискунова ббк 32. 973. 2-018 iconВ. Земских I Редактор Н. Дмитревская Художественный редактор в земских Верстка В. Зассеева Корректоры М. Одинакова^ Я. Тюрина ббк 65. 290-21
Перевел с английского А. Токарев Под научной редакцией д э н., профессора И. В. Андреевой
Научный редактор Н. Шалаев Литературный редактор А. Петроградская Технический редактор С. Прока Иллюстрации А. Бахарев Художник Н. Биржаков Верстка Л. Пискунова ббк 32. 973. 2-018 icon4000 полезных слов выражений краткий справочник переводчика-международника
Редактор А. В. Гусляев. Художественный редактор Л. М. Воронцова. Технический редактор М. Г. Чацкая. Корректоры Т. В. Болдырева, Н....
Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib.znate.ru 2014
обратиться к администрации
Библиотека
Главная страница