目录 2
第1篇 面向对象软件设计简介 2
第1章 面向对象范式 2
1.1 概述 2
1.2 面向对象范式之前:功能分解 2
1.3 需求的问题 4
1.4 处理变化:使用功能分解 5
1.5 处理变化的需求 7
1.6 面向对象范式 9
1.7 实践中的面向对象程序设计 14
1.8 特殊的对象方法 16
1.9 总结 17
第2章 UML——统一建模语言 20
2.1 概述 20
2.2 什么是UML 20
2.3 为什么使用UML 21
2.4 类图 21
2.5 交互图 26
2.6 总结 28
3.1 概述 30
3.2 从一个CAD/CAM系统提取信息 30
第2篇 传统面向对象设计的局限性 30
第3章 一个急需灵活代码的问题 30
3.3 理解专业词汇 31
3.4 问题的描述 32
3.5 基本的挑战和解决方法 34
3.6 总结 37
第4章 一个标准面向对象解决方案 38
4.1 概述 38
4.2 解决特定案例 38
4.3 总结 45
4.4 附录:C++代码示例 45
5.1 概述 51
5.2 设计模式产生于建筑学和人类学 51
第3篇 设计模式 51
第5章 设计模式简介 51
5.3 从建筑学转移到软件设计模式 55
5.4 为什么要学习设计模式 57
5.5 学习设计模式的其他优点 60
5.6 总结 61
第6章 Facade(外观)模式 62
6.1 概述 62
6.2 Facade模式简介 62
6.3 学习Facade模式 62
6.4 本章备注:Facade模式 65
6.5 将Facade模式与CAD/CAM问题联系起来 66
6.6 总结 67
第7章 Adapter(适配器)模式 68
7.1 概述 68
7.2 Adapter模式简介 68
7.3 学习Adapter模式 69
7.4 本章备注:Adapter模式 73
7.5 将Adapter模式与CAD/CAM问题联系起来 76
7.6 总结 76
7.7 附录:C++代码示例 76
第8章 扩展我们的视野 77
8.1 概述 77
8.2 对象:原来的观点和新的观点 78
8.3 封装:原来的观点和新的观点 79
8.4 发现并封装变化点 81
8.5 共同点/变化点以及抽象类 83
8.6 总结 85
第9章 Bridge(桥接)模式 86
9.1 概述 86
9.2 Bridge模式简介 86
9.3 学习Bridge模式:一个例子 87
9.4 使用设计模式的观察结果 96
9.5 学习Bridge模式:将它推导出来 97
9.7 本章备注:使用Bridge模式 107
9.6 Bridge模式回顾 107
9.8 总结 110
9.9 附录:C++代码示例 112
第10章 Abstract Factory(抽象工厂)模式 117
10.1 概述 117
10.2 Abstract Factory模式简介 117
10.3 学习Abstract Factory模式:一个例子 117
10.4 学习Abstract Factory模式:实现它 124
10.5 本章备注:Abstract Factory模式 127
10.6 将Abstract Factory模式与CAD/CAM问题联系起来 129
10.8 附录:C++代码示例 130
10.7 总结 130
第4篇 将所有这些放在一起:用模式的方法思考 134
第11章 专家如何进行设计 134
11.1 概述 134
11.2 通过“添加特征”进行建设 134
11.3 总结 139
第12章 用模式解决CAD/CAM问题 141
12.1 概述 141
12.2 对CAD/CAM问题的回顾 141
12.3 用模式的方法思考 142
12.5 用模式的方法思考:步骤2a 143
12.4 用模式的方法思考:步骤1 143
12.6 用模式的方法思考:步骤2b 147
12.7 用模式的方法思考:步骤2c 150
12.8 用模式的方法思考:步骤2d(Facade模式) 151
12.9 用模式的方法思考:步骤2d(Adapter模式) 152
12.10 用模式的方法思考:步骤2d(Abstract Factory模式) 153
12.11 用模式的方法思考:步骤3 153
12.12 与前面的解决方案的比较 154
12.13 总结 155
13.1 概述 156
13.2 开放-封闭的原则 156
第13章 设计模式的原则和策略 156
13.3 从场景进行设计的原则 157
13.4 包容变化的原则 160
13.5 总结 161
第5篇 用设计模式处理变化 165
第14章 Strategy(策略)模式 165
14.1 概述 165
14.2 一种处理新需求的途径 165
14.3 案例最初的需求 167
14.4 处理新的需求 167
14.5 Strategy模式 170
14.6 本章备注:使用Strategy模式 172
14.7 总结 173
第15章 Decorator(装饰)模式 174
15.1 概述 174
15.2 更细致的观察 174
15.3 Decorator模式 176
15.4 在我们的案例研究中应用Decorator模式 177
15.5 另一个例子:输入/输出 180
15.6 本章备注:使用Decorator模式 181
15.7 总结 183
15.8 附录:C++代码示例 183
16.2 Singleton模式简介 186
第16章 Singleton(单件)模式和Double-Checked Locking(双重检查锁定)模式 186
16.1 概述 186
16.3 在我们的案例研究中应用Singleton模式 187
16.4 一种变体:Double-Checked Locking模式 188
16.5 本章备注:使用Singleton模式和Double-Checked Locking模式 190
16.6 总结 191
16.7 附录:C++代码示例 191
16.8 译注 192
第17章 Observer(观察者)模式 194
17.1 概述 194
17.2 模式的分类 194
17.3 案例研究的更多需求 195
17.4 Observer模式 196
17.5 在我们的案例研究中应用Observer模式 197
17.6 本章备注:使用Observer模式 203
17.7 总结 203
17.8 附录:C++代码示例 204
第18章 Template Method(模板方法)模式 206
18.1 概述 206
18.2 案例研究的更多需求 206
18.3 Template Method模式 207
18.4 在我们的案例研究中应用Template Method模式 207
18.5 本章备注:使用Template Method模式 208
18.6 总结 210
第19章 Factory Method(工厂方法)模式 211
19.1 概述 211
19.2 案例研究的更多需求 211
19.3 Factory Method模式 212
19.4 本章备注:使用Factory Method模式 213
19.5 总结 214
第20章 分析矩阵 215
20.1 概述 215
20.2 现实世界:变化 215
20.3 变化中的案例研究:一个国际电子零售系统 216
20.4 本章备注 222
20.5 总结 223
第6篇 终点和起点 226
第21章 从面向对象设计的新视角进行的设计模式回顾 226
21.1 概述 226
21.2 面向对象原则的总结 226
21.3 设计模式如何封装实现 227
21.4 共同点/变化点分析和设计模式 227
21.5 按照责任分解问题领域 228
21.6 一个模式内部的关联 228
21.7 模式和场景化设计 229
21.9 总结 230
21.8 本章备注 230
第22章 推荐书目 232
22.1 设计模式精解:网络手册 232
22.2 设计模式和面向对象的推荐读物 233
22.3 给Java程序员的推荐读物 234
22.4 给C++程序员的推荐读物 235
22.5 给COBOL程序员的推荐读物 235
22.6 给XP(极端编程)的推荐读物 236
22.7 通用程序设计的推荐读物 236
22.8 个人推荐 236
附录:词汇表 239