第一部分 设计模式基础 3
第1章 设计模式概述 3
1.1 设计模式的定义与起源 3
1.1.1 模式与设计模式 3
1.1.2 模式的起源 3
1.1.3 设计模式的基本要素 4
1.2 为什么要使用设计模式 6
1.2.1 设计模式的作用 6
1.2.2 如何正确地学习和使用设计模式 7
1.3 GoF的23种设计模式 8
1.3.1 设计模式的分类 8
1.3.2 23种设计模式的简单描述 9
1.4 设计模式与架构、框架的区别与联系 10
1.4.1 什么是架构 10
1.4.2 什么是框架 12
1.4.3 设计模式、架构、框架的比较 12
1.5 本章习题 13
第2章 设计模式与UML建模 15
2.1 UML建模简介 15
2.2 UML类图 16
2.2.1 类与类图 16
2.2.2 类图中的基本元素符号 16
2.2.3 类与类之间的关系 18
2.3 UML建模实例分析 22
2.3.1 实例分析1——聊天系统登录模块 23
2.3.2 实例分析2——某C/S软件注册模块 24
2.4 本章习题 26
第3章 面向对象的设计原则 29
3.1 软件设计的“七宗罪” 29
3.2 面向对象的三大机制 31
3.2.1 封装 31
3.2.2 继承 33
3.2.3 多态 34
3.3 面向对象基本原则 35
3.3.1 单一职责原则 35
3.3.2 开闭原则 36
3.3.3 里氏替换原则 38
3.3.4 接口隔离原则 41
3.3.5 依赖倒置原则 43
3.4 本章习题 45
第二部分 创建型设计模式 49
第4章 工厂方法模式 49
4.1 从简单工厂模式到工厂方法模式 49
4.1.1 简单工厂模式 49
4.1.2 工厂方法模式 52
4.2 工厂方法模式的结构及其代码示例 53
4.2.1 工厂方法模式的结构 53
4.2.2 工厂方法模式的代码示例——笔记本电脑生产的模拟 54
4.3 工厂方法模式在电子商务系统中的应用 58
4.3.1 问题描述 58
4.3.2 使用工厂方法模式实现消息通知的发送 61
4.3.3 工厂方法模式的应用效果分析 67
4.4 本章习题 68
第5章 抽象工厂模式 71
5.1 抽象工厂模式概述 71
5.1.1 抽象工厂模式的动机 71
5.1.2 抽象工厂模式的定义 72
5.2 抽象工厂模式的结构及其代码示例 73
5.2.1 抽象工厂模式的结构 73
5.2.2 抽象工厂模式的代码示例——笔记本电脑生产商业务的拓展 74
5.3 抽象工厂模式在电子商务系统中的应用 78
5.3.1 问题描述 78
5.3.2 抽象工厂模式在电子商务系统数据访问层的使用 78
5.3.3 抽象工厂模式的应用效果分析 85
5.4 本章习题 86
第6章 建造者模式 88
6.1 建造者模式概述 88
6.1.1 建造者模式的动机 88
6.1.2 建造者模式的定义 88
6.2 建造者模式的结构及其代码示例 89
6.2.1 建造者模式的结构 89
6.2.2 建造者模式的代码示例——计算机生产过程的模拟 90
6.3 建造者模式在电子商务系统中的应用 93
6.3.1 问题描述 93
6.3.2 使用建造者模式实现电子商务系统中的数据导出 94
6.3.3 建造者模式的应用效果分析 100
6.4 本章习题 101
第7章 单例模式 103
7.1 单例模式概述 103
7.1.1 单例模式的动机 103
7.1.2 单例模式的定义 104
7.2 单例模式的结构及其代码示例 104
7.2.1 单例模式的结构 104
7.2.2 单例模式的代码示例——Windows回收站的创建模拟 104
7.3 单例模式在电子商务系统开发中的应用 110
7.3.1 问题描述 110
7.3.2 使用单例模式编写网站计数器程序 110
7.3.3 单例模式的应用效果分析 112
7.4 本章习题 112
第8章 原型模式 115
8.1 原型模式概述 115
8.1.1 原型模式的动机 115
8.1.2 原型模式的定义 116
8.2 原型模式的结构及其代码示例 116
8.2.1 原型模式的结构 116
8.2.2 原型模式的代码示例——简历克隆 117
8.3 原型模式在电子商务系统中的应用 121
8.3.1 问题描述 121
8.3.2 使用原型模式实现广告邮件的克隆 121
8.3.3 原型模式的应用效果分析 125
8.4 本章习题 126
第9章 创建型模式总结 128
9.1 创建型模式小结 128
9.2 创建型模式综合练习 130
第三部分 结构型设计模式 141
第10章 装饰者模式 141
10.1 装饰者模式概述 141
10.1.1 装饰者模式的动机 141
10.1.2 装饰者模式的定义 142
10.2 装饰者模式的结构及其代码示例 142
10.2.1 装饰者模式的结构 142
10.2.2 装饰者模式的代码示例——早餐店订单系统 143
10.3 装饰者模式在电子商务系统中的应用 148
10.3.1 问题描述 148
10.3.2 使用装饰者模式实现电子商务系统的计价功能 148
10.3.3 装饰者模式的应用效果分析 156
10.4 本章习题 156
第11章 适配器模式 159
11.1 适配器模式概述 159
11.1.1 适配器模式的动机 160
11.1.2 适配器模式的定义 160
11.2 适配器模式的结构及其代码示例 160
11.2.1 类适配器模式的结构 161
11.2.2 类适配器模式的代码示例——学生管理系统的维护 161
11.2.3 对象适配器模式的结构 164
11.2.4 对象适配器模式的代码示例——插座转换器的模拟 164
11.2.5 对象适配器模式和类适配器模式的比较 166
11.3 适配器模式在电子商务系统中的应用 167
11.3.1 问题描述 167
11.3.2 使用适配器模式实现电子商务系统功能的扩展 168
11.3.3 适配器模式的应用效果分析 174
11.4 本章习题 175
第12章 享元模式 177
12.1 享元模式概述 177
12.1.1 享元模式的动机 177
12.1.2 享元模式的定义 178
12.2 享元模式的结构及其代码示例 178
12.2.1 单纯享元模式的结构 178
12.2.2 单纯享元模式的代码示例——文本编辑器中的应用 179
12.2.3 复合享元模式的结构 181
12.2.4 复合享元模式的代码示例——文本编辑器中的应用 183
12.3 享元模式在电子商务系统中的应用 186
12.3.1 问题描述 186
12.3.2 使用享元模式实现淘宝网网店模板的共享 186
12.3.3 享元模式的应用效果分析 189
12.4 本章习题 190
第13章 代理模式 192
13.1 代理模式概述 192
13.1.1 代理模式的动机 192
13.1.2 代理模式的定义 192
13.2 代理模式的结构及其代码示例 193
13.2.1 代理模式的结构 193
13.2.2 代理模式的代码示例——票务中心代购车票 194
13.3 代理模式在电子商务系统中的应用 196
13.3.1 问题描述 196
13.3.2 远程代理示例——商品信息查询Web Service服务器端及客户端的实现 197
13.3.3 代理模式的应用效果分析 203
13.4 本章习题 203
第14章 桥接模式 205
14.1 桥接模式概述 205
14.1.1 桥接模式的动机 205
14.1.2 桥接模式的定义 206
14.2 桥接模式的结构及其代码示例 206
14.2.1 桥接模式的结构 206
14.2.2 桥接模式的代码示例——日志记录工具的开发 207
14.3 桥接模式在电子商务系统中的应用 213
14.3.1 问题描述 213
14.3.2 使用桥接模式实现电子商务系统中的发送消息通知的功能 213
14.3.3 桥接模式的应用效果分析 217
14.4 本章习题 218
第15章 组合模式 221
15.1 组合模式概述 221
15.1.1 组合模式的动机 222
15.1.2 组合模式的定义 222
15.2 组合模式的结构及其代码示例 222
15.2.1 组合模式的结构 222
15.2.2 组合模式的代码示例——二叉树遍历 223
15.3 组合模式在电子商务系统中的应用 228
15.3.1 问题描述 228
15.3.2 使用组合模式管理网站商品类别 228
15.3.3 组合模式的应用效果分析 234
15.4 本章习题 235
第16章 结构型设计模式总结 238
16.1 结构型模式小结 238
16.2 结构型模式综合练习 239
第四部分 行为型设计模式 251
第17章 观察者模式 251
17.1 观察者模式概述 251
17.1.1 观察者模式的动机 251
17.1.2 观察者模式的定义 251
17.2 观察者模式的结构及其代码示例 252
17.2.1 观察者模式的结构 252
17.2.2 观察者模式的代码示例——微信公众服务系统模拟 253
17.3 观察者模式在电子商务系统中的应用 259
17.3.1 问题描述 259
17.3.2 使用观察者模式实现电子商务系统中的商品订阅通知 259
17.3.3 观察者模式的应用效果分析 264
17.4 本章习题 265
第18章 策略模式 267
18.1 策略模式概述 267
18.1.1 策略模式的动机 267
18.1.2 策略模式的定义 268
18.2 策略模式的结构及其代码示例 268
18.2.1 策略模式的结构 268
18.2.2 策略模式的代码示例——Oracle数据库备份策略模拟 269
18.3 策略模式在电子商务系统中的应用 271
18.3.1 问题描述 271
18.3.2 使用策略模式实现商品排序功能 272
18.3.3 策略模式的应用效果分析 280
18.4 本章习题 281
第19章 责任链模式 283
19.1 责任链模式概述 283
19.1.1 责任链模式的动机 283
19.1.2 责任链模式的定义 284
19.2 责任链模式的结构及其代码示例 284
19.2.1 责任链模式的结构 284
19.2.2 责任链模式的代码示例——聚餐费用申请管理 285
19.3 责任链模式在电子商务系统中的应用 290
19.3.1 问题描述 290
19.3.2 使用责任链模式实现电子商务系统中的敏感词过滤 290
19.3.3 责任链模式的应用效果分析 294
19.4 本章习题 295
第20章 状态模式 297
20.1 状态模式概述 297
20.1.1 状态模式的动机 297
20.1.2 状态模式的定义 297
20.2 状态模式的结构及其代码示例 298
20.2.1 状态模式的结构 298
20.2.2 状态模式的代码示例——电灯的开关控制 298
20.3 状态模式在电子商务系统中的应用 300
20.3.1 问题描述 300
20.3.2 使用状态模式实现电子商务系统中会员等级状态的转换 301
20.3.3 状态模式的应用效果分析 305
20.4 本章习题 306
第21章 命令模式 311
21.1 命令模式概述 311
21.1.1 命令模式的动机 311
21.1.2 命令模式的定义 311
21.2 命令模式的结构及其代码示例 312
21.2.1 命令模式的结构 312
21.2.2 命令模式的代码示例——计算机启动过程模拟 313
21.3 命令模式在电子商务系统中的应用 316
21.3.1 问题描述 316
21.3.2 使用命令模式实现电子商务系统中的用户管理 317
21.3.3 命令模式的应用效果分析 324
21.4 本章习题 325
第22章 中介者模式 327
22.1 中介者模式概述 327
22.1.1 中介者模式的动机 327
22.1.2 中介者模式的定义 328
22.2 中介者模式的结构及其代码示例 328
22.2.1 中介者模式的结构 328
22.2.2 中介者模式的代码示例——房屋中介模拟 329
22.3 中介者模式在电子商务系统中的应用 332
22.3.1 问题描述 332
22.3.2 使用中介者模式模拟当当网的送货流程 333
22.3.3 中介者模式的应用效果分析 338
22.4 本章习题 339
第23章 行为型设计模式总结 341
23.1 行为型模式小结 341
23.2 行为型模式综合练习 344
附录 习题答案 350
参考文献 362