第1章 设计模式概述 1
1.1设计模式的诞生与发展 1
1.1.1模式的诞生与定义 1
1.1.2软件模式概述 3
1.1.3设计模式的发展 3
1.2设计模式的定义与分类 4
1.2.1设计模式的定义 4
1.2.2设计模式的基本要素 5
1.2.3设计模式的分类 6
1.3GoF设计模式简介 7
1.4设计模式的优点 9
1.5本章小结 10
1.6习题 10
第2章 面向对象设计原则 12
2.1面向对象设计原则概述 12
2.2单一职责原则 13
2.3开闭原则 15
2.4里氏代换原则 15
2.5依赖倒转原则 16
2.6接口隔离原则 18
2.7合成复用原则 20
2.8迪米特法则 22
2.9本章小结 24
2.10习题 24
第3章 简单工厂模式 27
3.1创建型模式 27
3.2简单工厂模式概述 28
3.3简单工厂模式的结构与实现 29
3.3.1简单工厂模式的结构 29
3.3.2简单工厂模式的实现 30
3.4简单工厂模式的应用实例 31
3.5创建对象与使用对象 36
3.6简单工厂模式的简化 39
3.7简单工厂模式的优缺点与适用环境 39
3.7.1简单工厂模式的优点 39
3.7.2简单工厂模式的缺点 39
3.7.3简单工厂模式的适用环境 40
3.8本章小结 40
3.9习题 41
第4章 工厂方法模式 43
4.1工厂方法模式概述 43
4.2工厂方法模式的结构与实现 45
4.2.1工厂方法模式的结构 45
4.2.2工厂方法模式的实现 45
4.3工厂方法模式的应用实例 46
4.4配置文件与反射 50
4.5工厂方法的重载 51
4.6工厂方法的隐藏 53
4.7工厂方法模式的优缺点与适用环境 54
4.7.1工厂方法模式的优点 54
4.7.2工厂方法模式的缺点 55
4.7.3工厂方法模式的适用环境 55
4.8本章小结 55
4.9习题 56
第5章 抽象工厂模式 58
5.1产品等级结构与产品族 58
5.2抽象工厂模式概述 59
5.3抽象工厂模式的结构与实现 60
5.3.1抽象工厂模式的结构 60
5.3.2抽象工厂模式的实现 61
5.4抽象工厂模式的应用实例 62
5.5开闭原则的倾斜性 69
5.6抽象工厂模式的优缺点与适用环境 69
5.6.1抽象工厂模式的优点 69
5.6.2抽象工厂模式的缺点 70
5.6.3抽象工厂模式的适用环境 70
5.7本章小结 70
5.8习题 71
第6章 建造者模式 73
6.1建造者模式概述 73
6.2建造者模式的结构与实现 74
6.2.1建造者模式的结构 74
6.2.2建造者模式的实现 75
6.3建造者模式的应用实例 78
6.4指挥者类的深入讨论 84
6.5建造者模式的优缺点与适用环境 88
6.5.1建造者模式的优点 88
6.5.2建造者模式的缺点 88
6.5.3建造者模式的适用环境 88
6.6本章小结 89
6.7习题 89
第7章 原型模式 91
7.1原型模式概述 91
7.2原型模式的结构与实现 92
7.2.1原型模式的结构 92
7.2.2浅克隆与深克隆 93
7.2.3原型模式的实现 94
7.3原型模式的应用实例 97
7.4原型管理器 101
7.5原型模式的优缺点与适用环境 102
7.5.1原型模式的优点 102
7.5.2原型模式的缺点 102
7.5.3原型模式的适用环境 102
7.6本章小结 103
7.7习题 103
第8章 单例模式 105
8.1单例模式概述 105
8.2单例模式的结构与实现 106
8.2.1单例模式的结构 106
8.2.2单例模式的实现 107
8.3单例模式的应用实例 108
8.4饿汉式单例与懒汉式单例 111
8.5单例模式的优缺点与适用环境 114
8.5.1单例模式的优点 114
8.5.2单例模式的缺点 114
8.5.3单例模式的适用环境 114
8.6本章小结 115
8.7习题 115
第9章 适配器模式 117
9.1结构型模式 117
9.2适配器模式概述 118
9.3适配器模式的结构与实现 119
9.3.1适配器模式的结构 119
9.3.2适配器模式的实现 120
9.4适配器模式的应用实例 122
9.5缺省适配器模式 127
9.6双向适配器 127
9.7适配器模式的优缺点与适用环境 128
9.7.1适配器模式的优点 129
9.7.2适配器模式的缺点 129
9.7.3适配器模式的适用环境 129
9.8本章小结 130
9.9习题 130
第10章 桥接模式 132
10.1桥接模式概述 132
10.2桥接模式的结构与实现 134
10.2.1桥接模式的结构 134
10.2.2桥接模式的实现 134
10.3桥接模式的应用实例 136
10.4桥接模式与适配器模式联用 142
10.5桥接模式的优缺点与适用环境 143
10.5.1桥接模式的优点 143
10.5.2桥接模式的缺点 143
10.5.3桥接模式的适用环境 144
10.6本章小结 144
10.7习题 144
第11章 组合模式 146
11.1组合模式概述 146
11.2组合模式的结构与实现 148
11.2.1组合模式的结构 148
11.2.2组合模式的实现 148
11.3组合模式的应用实例 150
11.4透明组合模式与安全组合模式 156
11.5组合模式的优缺点与适用环境 157
11.5.1组合模式的优点 158
11.5.2组合模式的缺点 158
11.5.3组合模式的适用环境 158
11.6本章小结 158
11.7习题 159
第12章 装饰模式 161
12.1装饰模式概述 161
12.2装饰模式的结构与实现 162
12.2.1装饰模式的结构 162
12.2.2装饰模式的实现 163
12.3装饰模式的应用实例 165
12.4透明装饰模式与半透明装饰模式 170
12.5装饰模式的优缺点与适用环境 171
12.5.1装饰模式的优点 171
12.5.2装饰模式的缺点 172
12.5.3装饰模式的适用环境 172
12.6本章小结 172
12.7习题 173
第13章 外观模式 175
13.1外观模式概述 175
13.2外观模式的结构与实现 177
13.2.1外观模式的结构 177
13.2.2外观模式的实现 177
13.3外观模式的应用实例 179
13.4抽象外观类 183
13.5外观模式的优缺点与适用环境 186
13.5.1外观模式的优点 186
13.5.2外观模式的缺点 187
13.5.3外观模式的适用环境 187
13.6本章小结 187
13.7习题 188
第14章 享元模式 190
14.1享元模式概述 190
14.2享元模式的结构与实现 191
14.2.1享元模式的结构 191
14.2.2享元模式的实现 192
14.3享元模式的应用实例 194
14.4有外部状态的享元模式 198
14.5单纯享元模式和复合享元模式 201
14.6享元模式的优缺点与适用环境 202
14.6.1享元模式的优点 202
14.6.2享元模式的缺点 202
14.6.3享元模式的适用环境 202
14.7本章小结 202
14.8习题 203
第15章 代理模式 205
15.1代理模式概述 205
15.2代理模式的结构与实现 206
15.2.1代理模式的结构 206
15.2.2代理模式的实现 207
15.3代理模式的应用实例 209
15.4远程代理 213
15.5虚拟代理 214
15.6缓冲代理 214
15.7代理模式的优缺点与适用环境 216
15.7.1代理模式的优点 216
15.7.2代理模式的缺点 217
15.7.3代理模式的适用环境 217
15.8本章小结 217
15.9习题 218
第16章 职责链模式 220
16.1行为型模式 221
16.2职责链模式概述 222
16.3职责链模式的结构与实现 223
16.3.1职责链模式的结构 223
16.3.2职责链模式的实现 224
16.4职责链模式的应用实例 225
16.5纯与不纯的职责链模式 232
16.6职责链模式的优缺点与适用环境 232
16.6.1职责链模式的优点 232
16.6.2职责链模式的缺点 233
16.6.3职责链模式的适用环境 233
16.7本章小结 233
16.8习题 234
第17章 命令模式 236
17.1命令模式概述 236
17.2命令模式的结构与实现 237
17.2.1命令模式的结构 237
17.2.2命令模式的实现 238
17.3命令模式的应用实例 240
17.4实现命令队列 244
17.5记录请求日志 245
17.6实现撤销操作 246
17.7宏命令 249
17.8命令模式的优缺点与适用环境 249
17.8.1命令模式的优点 249
17.8.2命令模式的缺点 250
17.8.3命令模式的适用环境 250
17.9本章小结 251
17.10习题 251
第18章 解释器模式 253
18.1解释器模式概述 253
18.2文法规则和抽象语法树 254
18.3解释器模式的结构与实现 255
18.3.1解释器模式的结构 255
18.3.2解释器模式的实现 256
18.4解释器模式的应用实例 258
18.5解释器模式的优缺点与适用环境 265
18.5.1解释器模式的优点 265
18.5.2解释器模式的缺点 265
18.5.3解释器模式的适用环境 265
18.6本章小结 266
18.7习题 266
第19章 迭代器模式 268
19.1迭代器模式概述 268
19.2迭代器模式的结构与实现 269
19.2.1迭代器模式的结构 269
19.2.2迭代器模式的实现 270
19.3迭代器模式的应用实例 272
19.4使用内部类实现迭代器 278
19.5.NET内置迭代器 279
19.6迭代器模式的优缺点与适用环境 282
19.6.1迭代器模式的优点 282
19.6.2迭代器模式的缺点 282
19.6.3迭代器模式的适用环境 283
19.7本章小结 283
19.8习题 283
第20章 中介者模式 285
20.1中介者模式概述 285
20.2中介者模式的结构与实现 287
20.2.1中介者模式的结构 287
20.2.2中介者模式的实现 288
20.3中介者模式的应用实例 290
20.4扩展中介者与同事类 296
20.5中介者模式的优缺点与适用环境 300
20.5.1中介者模式的优点 300
20.5.2中介者模式的缺点 300
20.5.3中介者模式的适用环境 300
20.6本章小结 301
20.7习题 301
第21章 备忘录模式 303
21.1备忘录模式概述 303
21.2备忘录模式的结构与实现 304
21.2.1备忘录模式的结构 304
21.2.2备忘录模式的实现 305
21.3备忘录模式的应用实例 308
21.4实现多次撤销 312
21.5备忘录模式的优缺点与适用环境 315
21.5.1备忘录模式的优点 315
21.5.2备忘录模式的缺点 315
21.5.3备忘录模式的适用环境 315
21.6本章小结 316
21.7习题 316
第22章 观察者模式 318
22.1观察者模式概述 318
22.2观察者模式的结构与实现 319
22.2.1观察者模式的结构 319
22.2.2观察者模式的实现 320
22.3观察者模式的应用实例 322
22.4观察者模式与.NET中的委托事件模型 327
22.5观察者模式与MVC 330
22.6观察者模式的优缺点与适用环境 330
22.6.1观察者模式的优点 330
22.6.2观察者模式的缺点 331
22.6.3观察者模式的适用环境 331
22.7本章小结 331
22.8习题 332
第23章 状态模式 333
23.1状态模式概述 333
23.2状态模式的结构与实现 334
23.2.1状态模式的结构 334
23.2.2状态模式的实现 335
23.3状态模式的应用实例 337
23.4共享状态 344
23.5使用环境类实现状态的转换 348
23.6状态模式的优缺点与适用环境 351
23.6.1状态模式的优点 351
23.6.2状态模式的缺点 351
23.6.3状态模式的适用环境 352
23.7本章小结 352
23.8习题 352
第24章 策略模式 355
24.1策略模式概述 355
24.2策略模式的结构与实现 356
24.2.1策略模式的结构 356
24.2.2策略模式的实现 357
24.3策略模式的应用实例 358
24.4PetShop 4.0中的订单处理 362
24.5策略模式的优缺点与适用环境 363
24.5.1策略模式的优点 363
24.5.2策略模式的缺点 364
24.5.3策略模式的适用环境 364
24.6本章小结 364
24.7习题 365
第25章 模板方法模式 366
25.1模板方法模式概述 366
25.2模板方法模式的结构与实现 367
25.2.1模板方法模式的结构 367
25.2.2模板方法模式的实现 368
25.3模板方法模式的应用实例 371
25.4钩子方法的使用 374
25.5模板方法模式的优缺点与适用环境 377
25.5.1模板方法模式的优点 377
25.5.2模板方法模式的缺点 378
25.5.3模板方法模式的适用环境 378
25.6本章小结 378
25.7习题 379
第26章 访问者模式 380
26.1访问者模式概述 380
26.2访问者模式的结构与实现 382
26.2.1访问者模式的结构 382
26.2.2访问者模式的实现 383
26.3访问者模式的应用实例 385
26.4访问者模式与组合模式联用 393
26.5访问者模式的优缺点与适用环境 393
26.5.1访问者模式的优点 394
26.5.2访问者模式的缺点 394
26.5.3访问者模式的适用环境 394
26.6本章小结 394
26.7习题 395
附录A UML类图 397
A.1UML概述 397
A.2类与类的UML表示 398
A.3类之间的关系 400
附录B 设计模式模拟试题 408
B.1模拟试题一 408
B.2模拟试题二 411
B.3模拟试题三 414
参考文献 417