内容简介 · · · · · ·
本书结合设计实例从面向对象的设计中精选出23个设计模式, 总结了面向对象设计中*有价值的经验, 并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好、 表达清楚的软件设计模式, 这些模式在实用环境下特别有用。 本书适合大学计算机专业的学生、研究生及相关人员参考。
设计模式的创作者
· · · · · ·
-
Erich Gamma 作者
作者简介 · · · · · ·
四位作者均是国际公认的面向对象软件领域的专家。
Erich Gamma博士是瑞士苏黎士国际面向对象技术软件中心的技术主管。
Richard Helm博士是澳大利亚悉尼IBM顾问集团公司面向对象技术公司的成员。
Ralph Johnson博士是Urbana-Champaign伊利诺大学计算机科学系成员。
John Vlissides博士是位于纽约Hawthorne的IBN托马斯J.沃森研究中心的研究人员。
目录 · · · · · ·
出版者的话
赞誉
序言
前言
读者指南
第1章引言┊1
1.1 什么是设计模式┊3
1.2 Smalltalk MVC中的设计模式┊4
1.3 描述设计模式┊6
1.4 设计模式的编目┊7
1.5 组织编目┊8
1.6 设计模式怎样解决设计问题┊10
1.6.1 寻找合适的对象┊10
1.6.2 决定对象的粒度┊11
1.6.3 指定对象接口┊11
1.6.4 描述对象的实现┊12
1.6.5 运用复用机制┊15
1.6.6 关联运行时和编译时的结构┊18
1.6.7 设计应支持变化┊19
1.7 怎样选择设计模式┊22
1.8 怎样使用设计模式┊24
第2章实例研究:设计一个文档编辑器┊25
2.1 设计问题┊27
2.2 文档结构┊27
2.2.1 递归组合┊28
2.2.2 图元┊29
2.2.3 组合模式┊31
2.3 格式化┊31
2.3.1 封装格式化算法┊31
2.3.2 Compositor和Composition┊32
2.3.3 策略模式┊33
2.4 修饰用户界面┊34
2.4.1 透明围栏┊34
2.4.2 Monoglyph┊35
2.4.3 Decorator模式┊36
2.5 支持多种视感标准┊37
2.5.1 对象创建的抽象┊37
2.5.2 工厂类和产品类┊38
2.5.3 Abstract Factory 模式┊40
2.6 支持多种窗口系统┊40
2.6.1 是否可以使用Abstract Factory模式┊40
2.6.2 封装实现依赖关系┊41
2.6.3 Window和WindowImp┊43
2.6.4 Bridge模式┊46
2.7 用户操作┊46
2.7.1 封装一个请求┊47
2.7.2 Command类及其子类┊47
2.7.3 撤销和重做┊48
2.7.4 命令历史记录┊49
2.7.5 Command模式┊50
2.8 拼写检查和断字处理┊50
2.8.1 访问分散的信息┊51
2.8.2 封装访问和遍历┊51
2.8.3 Iterator类及其子类┊52
2.8.4 Iterator模式┊55
2.8.5 遍历和遍历过程中的动作┊55
2.8.6 封装分析┊56
2.8.7 Visitor类及其子类┊59
2.8.8 Visitor模式┊60
2.9 小结┊60
第3章创建型模式┊62
3.1 Abstract Factory(抽象工厂)—对象创建型模式┊66
3.2 Builder(生成器)—对象创建型模式┊74
3.3 Factory Method(工厂方法)—对象创建型模式┊81
3.4 Prototype(原型)—对象创建型模式┊89
3.5 Singleton(单件)—对象创建型模式┊96
3.6 创建型模式的讨论┊102
第4章结构型模式┊104
4.1 Adapter(适配器)—类对象结构型模式┊106
4.2 Bridge(桥接)—对象结构型模式┊115
4.3 Composite(组合)—对象结构型模式┊123
4.4 Decorator(装饰)—对象结构型模式┊132
4.5 Facade(外观)—对象结构型模式┊┊139
4.6 Flyweight(享元)—对象结构型模式┊146
4.7 Proxy(代理)—对象结构型模式┊155
4.8 结构型模式的讨论 ┊164
4.8.1 Adapter与Bridge┊164
4.8.2 Composite、Decorator与Proxy┊164
第5章行为型模式┊166
5.1 Chain of Responsibility(职责链)—对象行为型模式┊167
5.2 Command(命令)—对象行为型模式┊175
5.3 Interpreter(解释器)—类行为型模式┊183
5.4 Iterator(迭代器)—对象行为型模式┊193
5.5 Mediator(中介者)—对象行为型模式┊205
5.6 Memento(备忘录)—对象行为型模式┊212
5.7 Observer(观察者)—对象行为型模式┊219
5.8 State(状态)—对象行为型模式┊227
5.9 Strategy(策略)—对象行为型模式┊234
5.10 Template Method(模板方法)— 类行为型模式┊242
5.11 Visitor(访问者)—对象行为型 模式┊246
5.12 行为型模式的讨论┊256
5.12.1 封装变化┊256
5.12.2 对象作为参数┊257
5.12.3 通信应该被封装还是被分布┊257
5.12.4 对发送者和接收者解耦┊258
5.12.5 总结┊260
第6章结论┊261
6.1 设计模式将带来什么┊262
6.1.1 一套通用的设计词汇┊262
6.1.2 书写文档和学习的辅助手段┊263
6.1.3 现有方法的一种补充┊263
6.1.4 重构的目标┊264
6.2 本书简史┊265
6.3 模式界┊266
6.3.1 Alexander的模式语言┊266
6.3.2 软件中的模式┊267
6.4 邀请参与┊267
6.5 临别感想┊268
附录A词汇表┊269
附录B图示符号指南┊273
附录 C基本类┊277
参考文献┊284
· · · · · · (收起)
赞誉
序言
前言
读者指南
第1章引言┊1
1.1 什么是设计模式┊3
1.2 Smalltalk MVC中的设计模式┊4
1.3 描述设计模式┊6
1.4 设计模式的编目┊7
1.5 组织编目┊8
1.6 设计模式怎样解决设计问题┊10
1.6.1 寻找合适的对象┊10
1.6.2 决定对象的粒度┊11
1.6.3 指定对象接口┊11
1.6.4 描述对象的实现┊12
1.6.5 运用复用机制┊15
1.6.6 关联运行时和编译时的结构┊18
1.6.7 设计应支持变化┊19
1.7 怎样选择设计模式┊22
1.8 怎样使用设计模式┊24
第2章实例研究:设计一个文档编辑器┊25
2.1 设计问题┊27
2.2 文档结构┊27
2.2.1 递归组合┊28
2.2.2 图元┊29
2.2.3 组合模式┊31
2.3 格式化┊31
2.3.1 封装格式化算法┊31
2.3.2 Compositor和Composition┊32
2.3.3 策略模式┊33
2.4 修饰用户界面┊34
2.4.1 透明围栏┊34
2.4.2 Monoglyph┊35
2.4.3 Decorator模式┊36
2.5 支持多种视感标准┊37
2.5.1 对象创建的抽象┊37
2.5.2 工厂类和产品类┊38
2.5.3 Abstract Factory 模式┊40
2.6 支持多种窗口系统┊40
2.6.1 是否可以使用Abstract Factory模式┊40
2.6.2 封装实现依赖关系┊41
2.6.3 Window和WindowImp┊43
2.6.4 Bridge模式┊46
2.7 用户操作┊46
2.7.1 封装一个请求┊47
2.7.2 Command类及其子类┊47
2.7.3 撤销和重做┊48
2.7.4 命令历史记录┊49
2.7.5 Command模式┊50
2.8 拼写检查和断字处理┊50
2.8.1 访问分散的信息┊51
2.8.2 封装访问和遍历┊51
2.8.3 Iterator类及其子类┊52
2.8.4 Iterator模式┊55
2.8.5 遍历和遍历过程中的动作┊55
2.8.6 封装分析┊56
2.8.7 Visitor类及其子类┊59
2.8.8 Visitor模式┊60
2.9 小结┊60
第3章创建型模式┊62
3.1 Abstract Factory(抽象工厂)—对象创建型模式┊66
3.2 Builder(生成器)—对象创建型模式┊74
3.3 Factory Method(工厂方法)—对象创建型模式┊81
3.4 Prototype(原型)—对象创建型模式┊89
3.5 Singleton(单件)—对象创建型模式┊96
3.6 创建型模式的讨论┊102
第4章结构型模式┊104
4.1 Adapter(适配器)—类对象结构型模式┊106
4.2 Bridge(桥接)—对象结构型模式┊115
4.3 Composite(组合)—对象结构型模式┊123
4.4 Decorator(装饰)—对象结构型模式┊132
4.5 Facade(外观)—对象结构型模式┊┊139
4.6 Flyweight(享元)—对象结构型模式┊146
4.7 Proxy(代理)—对象结构型模式┊155
4.8 结构型模式的讨论 ┊164
4.8.1 Adapter与Bridge┊164
4.8.2 Composite、Decorator与Proxy┊164
第5章行为型模式┊166
5.1 Chain of Responsibility(职责链)—对象行为型模式┊167
5.2 Command(命令)—对象行为型模式┊175
5.3 Interpreter(解释器)—类行为型模式┊183
5.4 Iterator(迭代器)—对象行为型模式┊193
5.5 Mediator(中介者)—对象行为型模式┊205
5.6 Memento(备忘录)—对象行为型模式┊212
5.7 Observer(观察者)—对象行为型模式┊219
5.8 State(状态)—对象行为型模式┊227
5.9 Strategy(策略)—对象行为型模式┊234
5.10 Template Method(模板方法)— 类行为型模式┊242
5.11 Visitor(访问者)—对象行为型 模式┊246
5.12 行为型模式的讨论┊256
5.12.1 封装变化┊256
5.12.2 对象作为参数┊257
5.12.3 通信应该被封装还是被分布┊257
5.12.4 对发送者和接收者解耦┊258
5.12.5 总结┊260
第6章结论┊261
6.1 设计模式将带来什么┊262
6.1.1 一套通用的设计词汇┊262
6.1.2 书写文档和学习的辅助手段┊263
6.1.3 现有方法的一种补充┊263
6.1.4 重构的目标┊264
6.2 本书简史┊265
6.3 模式界┊266
6.3.1 Alexander的模式语言┊266
6.3.2 软件中的模式┊267
6.4 邀请参与┊267
6.5 临别感想┊268
附录A词汇表┊269
附录B图示符号指南┊273
附录 C基本类┊277
参考文献┊284
· · · · · · (收起)
丛书信息
· · · · · ·
计算机科学丛书(共628册),
这套丛书还有
《算法基础》《软件测试原理与实践》《计算机文化(原书第15版)》《Java编程思想(第2版)》《增强现实:原理与实践》
等
。
喜欢读"设计模式"的人也喜欢的电子书 · · · · · ·
支持 Web、iPhone、iPad、Android 阅读器
喜欢读"设计模式"的人也喜欢 · · · · · ·
设计模式的书评 · · · · · · ( 全部 91 条 )




看了30遍后至今没再看
这就是书中的阳春白雪。当然,高人是一看就懂。 前10遍,只懂几个模式;到20遍,似乎都懂了,但是放下书就不能自己构造一个出来;30遍后,至今没再看。书也看烂了,但是敝帚自珍。 读者最好熟悉c++,以及一定的利用c++做开发的经历。否则,最好看别的类似的书。 如果希望用o...
(展开)
> 更多书评 91篇
论坛 · · · · · ·
在这本书的论坛里发言这本书的其他版本 · · · · · · ( 全部10 )
-
机械工业出版社 (2000)9.1分 4212人读过
-
Addison-Wesley Professional (1994)9.1分 380人读过
-
机械工业出版社 (2002)9.3分 316人读过
-
机械工业出版社 (2007)9.1分 152人读过
以下书单推荐 · · · · · · ( 全部 )
- 【书】所谓知识的另一种 (自娱者小五)
- T (dhcn)
- 计算机基础 (#11)
- 书单|编程 (༺࿅࿆࿄࿆李朕࿄࿆࿅࿆༻)
- Java技术书单 (OverFlow)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
订阅关于设计模式的评论:
feed: rss 2.0
3 有用 灰色的彼得潘 2023-06-24 14:10:19 云南
刚工作的时候读过一次,当时读完去写代码总是想套用书里提出的模式,后来发现有点本末倒置了,便不再去想这些模式,现在经过了几年的工作,并且也给vscode提了一些pr单之后重新阅读这本书,阅读文本编辑器的例子,发现更加的能融会贯通了,希望以后我还是会忘记这些模式,就和元编程一样,根本没有什么元编程,有的只是编程
3 有用 Rubythecatt 2022-11-02 21:00:03 美国
读了引言,已经有了很多实践后再来读这本书轻松很多,像一本归纳总结的笔记。中文版好难读……接下来还是找找原版
1 有用 三天风 2023-08-06 08:24:26 河南
只看了一点,很晦涩。有些评论说翻译不好,感觉主要问题不在翻译。书的内容太过理论(一堆术语和定义),c++和smalltalk也没用过,这两点很影响阅读。考虑到成书时间和写作目的,不是缺点,但读起来很痛苦。
0 有用 苏西坡 2023-12-29 23:29:26 上海
太老了,而且没写过 OOP 的人读起来很吃力。OOP 确实日落西山了,对吧?
8 有用 annya 2022-08-19 14:29:14 湖北
设计模式的开山之作,书虽不厚但很难读,书中的例子是c++和smalltalk混着写的,我不是很熟smalltalk,因此让这本书更难读了。难读归难读,里边的好多概念是深刻且重要的,就比如引言中对于框架的解释让我感到豁然开朗。设计模式本来就很难,换本通俗的书读吧,别自己折磨自己了。