设计模式:可复用面向对象软件的基础(英文版·典藏版)
作者 : [美] 埃里克·伽玛(Erich Gamma) 理查德·赫尔姆(Richard Helm) 拉尔夫·约翰逊(Ralph Johnson) 约翰·威利斯迪斯(John Vlissides) 著
丛书名 : 经典原版书库
出版日期 : 2021-04-15
ISBN : 978-7-111-67954-7
适用人群 : 软件工程师、开发者及软件工程相关学生及研究人员
定价 : 79.00元
教辅资源下载
扩展信息
语种 : 英文
页数 : 396
开本 : 32
原书名 : Design Patterns: Elements of Reusable Object-Oriented Software
原出版社: Pearson Education Asia
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

本书是引导读者走出软件设计迷宫的指路明灯,凝聚了软件开发界几十年的设计经验。四位面向对象领域专家精心选取了颇具价值的设计实践,加以分类整理和命名,并用简洁而易于复用的形式表达出来。本书已经成为面向对象技术人员的圣经和词典,书中定义的23个模式逐渐成为开发界技术交流所必备的基础知识和词汇。

图书特色

设计模式:可复用面向对象软件的基础(英文版·典藏版)
Design Patterns: Elements of Reusable Object-Oriented Software
[美] 埃里克·伽玛(Erich Gamma) 理查德·赫尔姆(Richard Helm) 拉尔夫·约翰逊(Ralph Johnson) 约翰·威利斯迪斯(John Vlissides) 著

图书前言

本书并不是一本介绍面向对象技术或设计的书,目前已有不少好书介绍面向对象技术或设计。本书假设你至少已经比较熟悉一种面向对象编程语言,并且有一定的面向对象设计经验。当我们提及“类型”和“多态”,或“接口”继承与“实现”继承的关系时,你应该对这些概念了然于胸,而不是迫不及待地翻阅手头的字典。
另外,这也不是一篇高级专题技术论文,而是一本关于设计模式的书,它描述了在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从一开始就采用的设计方案。它们反映了不为人知的重新设计和重新编码的成果,而这些都来自软件开发者为了设计出灵活、可复用的软件而长时间进行的艰苦努力。设计模式捕获了这些解决方案,并用简洁易用的方式表达出来。
设计模式并不要求使用独特的语言特性,也不采用那些足以使你的朋友或老板大吃一惊的神奇的编程技巧。所有的模式均可以用标准的面向对象语言实现,这也许有时会比特殊的解法多费一些功夫,但是为了增加软件的灵活性和可复用性,多做些工作是值得的。
一旦理解了设计模式并且有了一种“Aha!”(而不是“Huh?”)的应用经验和体验后,你将用一种非同寻常的方式思考面向对象设计。你将拥有一种深刻的洞察力,以帮助你设计出更加灵活的、模块化的、可复用的和易理解的软件—这也是你着迷于面向对象技术的原因,不是吗?
当然还有一些提示和鼓励:第一次阅读此书时你可能不会完全理解它,但不必着急,我们在起初编写这本书时也没有完全理解它们!请记住,这不是一本读完一遍就可以束之高阁的书。我们希望你在软件设计过程中反复参阅此书,以获取设计灵感。
我们并不认为这组设计模式是完整的和一成不变的,它只是我们目前对设计的思考的记录。因此我们欢迎广大读者的批评与指正,无论书中采用的实例、参考,还是我们遗漏的已知应用,或应该包含的设计模式等。你可以通过Addison-Wesley写信给我们,或发送电子邮件到design-patterns@cs.uiuc.edu。你还可以通过发送邮件“send design pattern source”到design-patterns-source@cs.uiuc.edu获取书中的示例代码部分的源代码。
另外我们有一个专门的网页报道最新的消息与更新:http://st-www.cs.uiuc.edu/users/patterns/DPBook/DPBook.html。

E. G. 于加州Mountain View
R. H. 于蒙特利尔
R. J. 于伊利诺伊Urbana
J. V. 于纽约 Hawthorne
1994年8月

专家评论

“这本书是我所读过的写得最好、最富洞察力的书籍……本书不是泛泛而论,而是结合实例,以最佳的方式确立了模式的合法地位。”
—Stan Lippman, C++ Report

“……Gamma、Helm、Johnson和Vlissides的这本书将对软件设计领域产生重要且深远的影响。由于本书将自己定位于面向对象软件技术,恐怕面向对象圈子以外的设计者会忽视它的价值,但这将是一件憾事。事实上,从事软件设计的每个人都能从本书中获益。所有软件设计者都在使用模式,而更好地理解这种对工作的可复用的抽象只会使我们做得更好。”
—Tom DeMarco, IEEE Software

“总的来讲,这本书表达了一种极有价值的东西,对软件设计领域有着独特的贡献,因为它捕获了面向对象设计的有价值的经验,并且用简洁可复用的形式表达出来。它将成为我寻找面向对象设计思想时经常翻阅的一本书,这正是复用的真实含义所在,不是吗?”
—Sanjiv Gossain, Journal of Object-Oriented Programming

“这本众人期待的书达到了预期的全部效果。‘模式’的说法来自一位建筑师的书,它云集了经过时间考验的可用设计。作者从多年的面向对象设计经验中精选出23个模式,这构成了本书的精华部分,每一个精益求精的优秀程序员都应该拥有这本书。”
—Larry O払rien, Software Development

“本书在实用环境下特别有用,因为它分类描述了一组设计良好、表达清楚的面向对象软件设计模式。设计模式领域还很新,本书的四位作者也许已占据了在这方面造诣最深的专家中的半数,因而他们定义模式的方式可以作为后来者的榜样。如果想要知道怎样恰当定义和描述设计模式,我们应该可以从他们的专业知识中获得启发。”
—Steve Bilow, Journal of Object-Oriented Programming

“这是一本深刻有力的书。在花费了相当多的时间研究本书后,绝大部分C++程序员都能够使用模式构造出更好的软件。本书发挥了一种智能杠杆作用:提供具体工具帮助我们思考并有效地表达自己。它也许能从根本上改变你对程序设计的看法。”
—Tom Cargill, C++ Report

上架指导

计算机\软件工程

封底文字

本书是引导读者走出软件设计迷宫的指路明灯,凝聚了软件开发界几十年的设计经验。四位顶尖的面向对象领域专家精心选取了颇具价值的设计实践,并把它们加以分类整理和命名,再用简洁而易于复用的形式表达出来。本书已经成为面向对象技术人员的圣经和词典,书中定义的23个模式逐渐成为开发界技术交流所必备的基础知识和词汇。

图书序言

所有结构良好的面向对象软件体系结构中都包含了许多模式。实际上,当我评估一个面向对象系统的质量时,使用的方法之一就是要判断系统的设计者是否强调了对象之间的公共协同关系。在系统开发阶段强调这种机制的优势在于,它能使所生成的系统体系结构更加精巧、简洁和易于理解,其程度远远超过了未使用模式的体系结构。
模式在构造复杂系统时的重要性早已在其他领域中得到认可。特别是,Christopher Alexander和他的同事们可能最先将模式语言(pattern language)应用于城市建筑领域,他的思想和其他人的贡献已经根植于面向对象软件界。简而言之,软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。
在本书中,Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides介绍了设计模式的原理,并且对这些设计模式进行了分类描述。因此,该书做出了两个重要的贡献:首先,它展示了模式在构建复杂系统过程中所处的角色;其次,它为如何引用一组精心设计的模式提供了一个实用方法,以帮助实际开发者针对特定应用问题使用适当的模式进行设计。
我曾荣幸地与本书的部分作者一同进行体系结构设计工作,从他们身上我学到了许多东西,相信阅读本书也能让你受益匪浅。

Rational 软件公司首席科学家
Grady Booch

作者简介

[美] 埃里克·伽玛(Erich Gamma) 理查德·赫尔姆(Richard Helm) 拉尔夫·约翰逊(Ralph Johnson) 约翰·威利斯迪斯(John Vlissides) 著:
埃里克·伽玛(Erich Gamma) 在瑞士苏黎世大学获得计算机科学博士学位。他与Kent Beck合作开发了单元测试框架JUnit,并领导了Eclipse Java Development Tools项目。他还曾是IBM Rational Jazz项目的主要成员。2011年,Gamma以杰出工程师(Distinguished Engineer)的身份加入微软Visual Studio团队,领导微软位于瑞士苏黎世的实验室。
理查德·赫尔姆(Richard Helm) 在澳大利亚墨尔本大学获得计算机科学博士学位,曾在IBM T. J. Watson担任研究员,并在澳大利亚开创了IBM面向对象技术研究分部。
拉尔夫·约翰逊(Ralph Johnson) 在美国康奈尔大学获得计算机科学博士学位,伊利诺伊大学教授,在模式、重构等领域均有很高造诣。
约翰·威利斯迪斯(John Vlissides) 在美国斯坦福大学获得计算机科学博士学位,是IBM T. J. Watson研究中心的研究员。

图书目录

1 Introduction 1
1.1 WhatIs a Design Pattern? . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1 2 Design Patterns in Smalltalk MVC 4
1.3 Describing Design Patterns . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 The Catalog of Design Patterns . . . . . . . . . . . . . . . . . . . . . . 8
1.5 Organizing the Catalog . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6 How Design Patterns Solve Design Problems . . . . . . . . . . . . . . . 11
1.7 Howto Selecta Design Pattern . . . . . . . . . . . . . . . . . . . . . . . 28
1.8 Howto Use a Design Pattern . . . . . . . . . . . . . . . . . . . . . . . . 29
2 A Case Study: Designing a Document Editor 33
2 1 Design Problems 33
2.2 Document Structure . . . . . . . . . . . . . . . . . . . . . 35
2.3 Formatting . . . . . . . . . . . . . . . . . . . . . . . . ~ 40
2.4 Embellishing the User Interface . . . . . . . . . . . . . . . . . . . . 43
2.5 Supporting Multiple Look-and-Feel Standards 47
2.6 Supporting Multiple Window Systems . . . . . . . . . . . . . . . . . . . 51
2.7 User Operations . . . . . . . . . . . . . . . . . . . . . 58
2.8 Spelling Checking and Hyphenation. . . . . . . . . . . . . . . . . . . . . 64
2.9 Summary. . . . . . . . . . . . . . . . . . . . . 76
Design Pattern Catalog 79
3 Creational Patterns 81
Abstract Factory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Factory Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Prototype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Singleton 127
Discussion of Creational Patterns 135
4 Structural Patterns 137
Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Composite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Decorator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Facade........................................ 185
Flyweight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Discussion of Structural Patterns . . . . . . . . . . . . . . . . . . . . . . . . . 219
5 Behavioral Patterns 221
Chain of Responsibility . . . . . . . . . . . . . . . . . . . . . . . 223
Command...................................... 233
Interpreter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Iterator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Mediator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Memento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Observer...................................... 293
State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Strate~v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Template Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
Visitor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Discussion of Behavioral Patterns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
6 Conclusion
6.1 What to Expect from Design Patterns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
6.2 A Brief History. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
6.3 The Pattern Community. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
6.4 An Invitation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
6.5 A Parting Thought. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
A Glossary
B Guide to Notation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
B.1 Class Diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
B.2 Object Diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
B.3 Interaction Diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
C Foundation Classes 369
C.1 List. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
C.2 Iterator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
C.3 ListIterator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
C.4 Point. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
C.5 Rect. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Bibliography 375

教学资源推荐
作者: (英)Ian Sommerville 著 圣安德鲁斯大学
作者: 梁正平 毋国庆 袁梦霆 李勇华 编著
作者: [美]Paul C.Jorgensen
作者: 韩万江 姜立新 等编著 宋茂强 审
参考读物推荐
作者: (美)Kent Beck 著
作者: (美)Capers Jones
作者: Sam Guckenheimer Juan J.Perez
作者: 邱郁惠