没有合适的资源?快使用搜索试试~ 我知道了~
设计模式-可复用面向对象软件的基础(高清非扫描带书签)
5星 · 超过95%的资源 需积分: 10 65 下载量 17 浏览量
2011-11-24
11:30:37
上传
评论
收藏 5.71MB PDF 举报
温馨提示
设计模式-可复用面向对象软件的基础,一本很出名的书籍。
资源推荐
资源详情
资源评论
序 言
所有结构良好的面向对象软件体系结构中都包含了许多模式。实际上,当我评估一个面
向对象系统的质量时,所使用的方法之一就是要判断系统的设计者是否强调了对象之间的公
共协同关系。在系统开发阶段强调这种机制的优势在于,它能使所生成的系统体系结构更加
精巧、简洁和易于理解,其程度远远超过了未使用模式的体系结构。
模式在构造复杂系统时的重要性早已在其他领域中被认可。特别地,Christopher
Alexander 和他的同事们可能最先将模式语言(pattern language)应用于城市建筑领域,他
的思想和其他人的贡献已经根植于面向对象软件界。简而言之,软件领域中的设计模式为开
发人员提供了一种使用专家设计经验的有效途径。
在本书中,Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 介绍了设计模
式的原理,并且对这些设计模式进行了分类描述。因此,该书做出了两个重要的贡献:首先,
它展示了模式在建造复杂系统过程中所处的角色;其次,它为如何引用一组精心设计的模式
提供了一个实用方法,以帮助实际开发者针对特定应用问题使用适当的模式进行设计。
我曾荣幸地有机会与本书的部分作者一同进行体系结构设计工作,从他们身上我学到了
许多东西,并相信通过阅读该书你同样也会受益匪浅。
Rational 软件公司首席科学家 Grady Booch
前 言
本书并不是一本介绍面向对象技术或设计的书,目前已有不少好书介绍面向对象技术或
设计。本书假设你至少已经比较熟悉一种面向对象编程语言,并且有一定的面向对象设计经
验。当我们提及“类型”和“多态”,或“接口”继承与“实现”继承的关系时,你应该对
这些概念了然于胸,而不必迫不及待地翻阅手头的字典。
另外,这也不是一篇高级专题技术论文,而是一本关于设计模式的书,它描述了在面向
对象软件设计过程中针对特定问题的简洁而优雅的解决方案。设计模式捕获了随时间进化与
发展的问题的求解方法,因此它们并不是人们从一开始就采用的设计方案。它们反映了不为
人知的重新设计和重新编码的成果,而这些都来自软件开发者为了设计出灵活可复用的软件
而长时间进行的艰苦努力。设计模式捕获了这些解决方案,并用简洁易用的方式表达出来。
设计模式并不要求使用独特的语言特性,也不采用那些足以使你的朋友或老板大吃一惊
的神奇的编程技巧。所有的模式均可以用标准的面向对象语言实现,这也许有时会比特殊的
解法多费一些功夫,但是为了增加软件的灵活性和可复用性,多做些工作是值得的。
一旦你理解了设计模式并且有了一种“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. 于伊利诺 UrbanaJ.V. 于纽约 Hawthorne
1994 年 8 月
目 录
序言
前言
第 1 章 引言 1
1.1 什么是设计模式 2
1.2 Smalltalk MVC 中的设计模式 3
1.3 描述设计模式 4
1.4 设计模式的编目 5
1.5 组织编目 7
1.6 设计模式怎样解决设计问题 8
1.6.1 寻找合适的对象 8
1.6.2 决定对象的粒度 9
1.6.3 指定对象接口 9
1.6.4 描述对象的实现 10
1.6.5 运用复用机制 13
1.6.6 关联运行时刻和编译时刻的结构 15
1.6.7 设计应支持变化 16
1.7 怎样选择设计模式 19
1.8 怎样使用设计模式 20
第 2 章 实例研究:设计一个文档编辑器 22
2.1 设计问题 23
2.2 文档结构 23
2.2.1 递归组合 24
2.2.2 图元 25
2.2.3 组合模式 27
2.3 格式化 27
2.3.1 封装格式化算法 27
2.3.2 Compositor 和 Composition 27
2.3.3 策略模式 29
2.4 修饰用户界面 29
2.4.1 透明围栏 29
2.4.2 Monoglyph 30
2.4.3 Decorator 模式 32
2.5 支持多种视感标准 32
2.5.1 对象创建的抽象 32
2.5.2 工厂类和产品类 33
2.5.3 Abstract Factory 模式 35
2.6 支持多种窗口系统 35
2.6.1 我们是否可以使用 Abstract Factory 模式 35
2.6.2 封装实现依赖关系 35
2.6.3 Window 和 WindowImp 37
2.6.4 Bridge 模式 40
2.7 用户操作 40
2.7.1 封装一个请求 41
2.7.2 Command 类及其子类 41
2.7.3 撤消和重做 42
2.7.4 命令历史记录 42
2.7.5 Command 模式 44
2.8 拼写检查和断字处理 44
2.8.1 访问分散的信息 44
2.8.2 封装访问和遍历 45
2.8.3 Iterator 类及其子类 46
2.8.4 Iterator 模式 48
2.8.5 遍历和遍历过程中的动作 48
2.8.6 封装分析 48
2.8.7 Visitor 类及其子类 51
2.8.8 Visitor 模式 52
2.9 小结 53
第 3 章 创建型模式 54
3.1 Abstract Factory(抽象工厂)—对象创建型模式 57
3.2 Builder(生成器)—对象创建型对象创建型模式 70
3.4 Prototype(原型)—对象创建型模式 87
3.5 Singleton(单件)—对象创建型模式 84
3.6 创建型模式的讨论 89
第 4 章 结构型模式 91
4.1 Adapter(适配器)—类对象结构型模式 92
4.2 Bridge(桥接)—对象结构型模式 100
4.3 Composite(组成)—对象结构型模式 107
4.4 Decorator(装饰)—对象结构型模式 115
4.5 FACADE(外观)—对象结构型模式 121
4.6 Flyweight(享元)—对象结构型模式 128
4.7 Proxy(代理)—对象结构型模式 137
4.8 结构型模式的讨论 144
4.8.1 Adapter 与 Bridge 144
4.8.2 Composite、Decorator 与 Proxy 145
第 5 章 行为模式 147
5.1 CHAIN OF RESPONSIBIL ITY(职责链)—对象行为型模式 147
5.2 COMMAND(命令)—对象行为型模式 154
5.3 INTERPRETER(解释器)—类行为型模式 162
5.4 ITERATOR(迭代器)—对象行为型模式 171
5.5 MEDIATOR(中介者)—对象行为型模式 181
5.6 MEMENTO(备忘录)—对象行为型模式 188
5.7 OBSERVER(观察者)—对象行为型模式 194
5.8 STATE(状态)—对象行为型模式 201
5.9 STRATEGY(策略)—对象行为型模式 208
5.10 TEMPLATE METHOD(模板方法)—类行为型模式 214
5.11 VISITOR(访问者)—对象行为型模式 218
5.12 行为模式的讨论 228
5.12 1 封装变化 228
5.12.2 对象作为参数 228
5.12.3 通信应该被封装还是被分布 229
5.12.4 对发送者和接收者解耦 229
5.12.5 总结 231
第 6 章 结论 232
6.1 设计模式将带来什么 232
6.2 一套通用的设计词汇 232
6.3 书写文档和学习的辅助手段 232
6.4 现有方法的一种补充 233
6.5 重构的目标 233
6.6 本书简史 234
6.7 模式界 235
6.8 Alexander 的模式语言 235
6.9 软件中的模式 236
6.10 邀请参与 237
6.11 临别感想 237
附录 A 词汇表 238
附录 B 图示符号指南 241
附录 C 基本类 244
剩余258页未读,继续阅读
资源评论
- HarvestII2019-12-08不错不错,非常清晰,完整的
- usun822012-11-08没想到这么小的文件还是完整版的
- lookupheaven2012-08-09设计模式圣经啊,扫描的,但非常清晰,而且书签完整
- ranbaosheng2014-04-17很清晰,好书
- haobide2013-04-18值得推荐 非常完美
stuqbx
- 粉丝: 14
- 资源: 24
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功