设计模式:可复用面向对象软件的基础(英文版·典藏版)
全新正版 急速发货
¥
38
4.8折
¥
79
全新
库存13件
作者埃里克
出版社机械工业出版社
ISBN9787111679547
出版时间2022-05
装帧精装
开本32开
定价79元
货号29238341
上书时间2024-12-25
商品详情
- 品相描述:全新
- 商品描述
-
前言
本书并不是一本介绍面向对象技术或设计的书,目前已有不少好书介绍面向对象技术或设计。本书假设你至少已经比较熟悉一种面向对象编程语言,并且有一定的面向对象设计经验。当我们提及“类型”和“多态”,或“接口”继承与“实现”继承的关系时,你应该对这些概念了然于胸,而不是迫不及待地翻阅手头的字典。
另外,这也不是一篇高级专题技术论文,而是一本关于设计模式的书,它描述了在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从一开始就采用的设计方案。它们反映了不为人知的重新设计和重新编码的成果,而这些都来自软件开发者为了设计出灵活、可复用的软件而长时间进行的艰苦努力。设计模式捕获了这些解决方案,并用简洁易用的方式表达出来。
设计模式并不要求使用独特的语言特性,也不采用那些足以使你的朋友或老板大吃一惊的神奇的编程技巧。所有的模式均可以用标准的面向对象语言实现,这也许有时会比特殊的解法多费一些功夫,但是为了增加软件的灵活性和可复用性,多做些工作是值得的。
一旦理解了设计模式并且有了一种“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月
导语摘要
本书是引导读者走出软件设计迷宫的指路明灯,凝聚了软件开发界几十年的设计经验。四位面向对象领域专家精心选取了颇具价值的设计实践,加以分类整理和命名,并用简洁而易于复用的形式表达出来。本书已经成为面向对象技术人员的 和词典,书中定义的23个模式逐渐成为开发界技术交流所的基础知识和词汇。
作者简介
埃里克·伽玛(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. . . . . . . . . . . . . . . . . . . . . . . .
内容摘要
本书是引导读者走出软件设计迷宫的指路明灯,凝聚了软件开发界几十年的设计经验。四位面向对象领域专家精心选取了颇具价值的设计实践,加以分类整理和命名,并用简洁而易于复用的形式表达出来。本书已经成为面向对象技术人员的 和词典,书中定义的23个模式逐渐成为开发界技术交流所的基础知识和词汇。
主编推荐
埃里克·伽玛(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研究中心的研究员。
— 没有更多了 —
以下为对购买帮助不大的评价