序 1
前言 1
第一部分 模式编程原理 1
第1章 模式概述 1
1.1 模式的概念 1
1.1.1 什么是模式 1
1.1.2 模式可以做什么 4
1.2 模式与架构 5
1.2.1 什么是架构 5
1.2.2 架构和模式的关系 5
1.3 从面向对象编程到模式编程 7
1.3.1 关于封装的哲学 7
1.3.2 利用继承实现变化的封装和简单的复用 8
1.3.3 借助模式封装多个变化 13
1.3.4 模式帮助我们解决问题 19
第2章 Delphi的模式编程机制 20
2.1 对象模型机制 20
2.1.1 对象模型 20
2.1.2 对象建模和模式编程 23
2.1.3 对象关系与复用 24
2.2 动态绑定机制 29
2.2.1 方法绑定 29
2.2.2 虚方法 29
2.2.3 多态 30
2.3 类型转换机制 32
2.3.1 类型 32
2.3.2 向上转型 33
2.3.3 向下转型 36
2.4 接口抽象机制 37
2.4.1 接口的概念 37
2.4.2 抽象类 39
2.4.3 对象接口 41
2.4.4 抽象类与对象接口的比较 42
2.4.5 针对接口而不是针对实现编程 43
第3章 模式编程法则 44
3.1 开闭法则(OCP) 44
3.2 Liskov代换法则(LSP) 46
3.3 依赖反转法则(DIP) 48
3.4 接口隔离法则(ISP) 51
3.5 单一职责法则(SRP) 59
第二部分 创建型模式编程 65
第4章 工厂方法模式(Factory Method) 65
4.1 模式解说 65
4.2 结构和用法 66
4.2.1 模式结构 66
4.2.2 代码模板 68
4.2.3 问题讨论 70
4.3 范例与实践 74
4.3.1 利用工厂方法模式设计可动态切换持久层机制的应用 74
4.3.2 范例小结 79
第5章 抽象工厂模式(Abstract Factory) 81
5.1 模式解说 81
5.2 结构和用法 82
5.2.1 模式结构 82
5.2.2 代码模板 83
5.3 范例与实践 86
5.3.1 用抽象工厂模式动态构造界面风格 86
5.3.2 WebSnap的Web Module架构与抽象工厂模式 92
5.3.3 范例小结 98
第6章 建造者模式(Builder) 100
6.1 模式解说 100
6.2.1 模式结构 101
6.2 结构和用法 101
6.2.2 代码模板 103
6.3 范例与实践 105
6.3.1 一个数据集对象产品的建造者模式 105
6.3.2 范例小结 109
第7章 单例模式(Singleton) 110
7.1 模式解说 110
7.2 结构和用法 112
7.2.1 模式结构 112
7.2.2 代码模板 114
7.2.3 Delphi对象构造机制与单例模式 116
7.3 范例与实践 121
7.3.1 一个共享数据库连接的单例模式范例 121
7.3.2 范例小结 128
8.1 模式解说 129
第8章 原型模式(Prototype) 129
8.2 结构和用法 130
8.2.1 模式结构 130
8.2.2 代码模板 130
8.3 范例与实践 134
8.3.1 Delphi对象的克隆 134
8.3.2 用原型模式克隆字体 136
8.3.3 Delphi对象流化与原型模式 141
8.3.4 范例小结 149
第三部分 结构型模式编程 152
第9章 适配器模式(Adapter) 152
9.1 模式解说 152
9.2 结构和用法 153
9.2.1 类的适配器模式 153
9.2.2 对象的适配器模式 154
9.2.3 问题讨论 156
9.3.1 用适配器模式包装第三方API的范例 157
9.3 范例与实践 157
9.3.2 范例小结 163
第10章 桥接模式(Bridge) 164
10.1 模式解说 164
10.2 结构和用法 166
10.2.1 模式结构 166
10.2.2 代码模板 167
10.3 范例与实践 170
10.3.1 使用桥接模式改进数据持久层的健壮性 170
10.3.2 基于桥接模式的一个数据视图程序 171
10.3.3 范例小结 184
第11章 合成模式(Composite) 185
11.1 模式解说 185
11.2 结构和用法 186
11.2.1 模式结构 186
11.2.2 代码模板 187
11.2.3 问题讨论 189
11.3 范例与实践 191
11.3.1 合成模式在组织机构管理系统中的应用 191
11.3.2 范例小结 200
第12章 装饰者模式(Decorator) 201
12.1 模式解说 201
12.2 结构和用法 203
12.2.1 模式结构 203
12.2.2 代码模板 204
12.2.3 问题讨论 206
12.3 范例与实践 207
12.3.1 装饰者模式在图片观赏器中的应用 207
12.3.2 范例小结 215
第13章 门面模式(Facade) 217
13.1 模式解说 217
13.2.1 模式结构 219
13.2 结构和用法 219
13.2.2 代码模板 221
13.2.3 问题讨论 225
13.3 范例与实践 226
13.3.1 门面模式和分布式系统的设计优化 226
13.3.2 用门面模式设计的COM+银行转账系统 227
13.3.3 COMQ+银行转账系统实现代码剖析 228
13.3.4 范例小结 243
第14章 享元模式(Flyweight) 245
14.1 模式解说 245
14.2 结构和用法 246
14.2.1 模式结构 246
14.2.2 代码模板 247
14.3 范例与实践 251
14.3.1 对象池技术和享元模式 251
14.2.3 问题讨论 251
14.3.2 享元模式在任务调度系统中的应用 253
14.3.3 范例小结 258
第15章 代理模式(Proxy) 259
15.1 模式解说 259
15.2 结构和用法 261
15.2.1 模式结构 261
15.2.2 代码模板 262
15.3 范例与实践 264
15.3.1 代理模式在数据库程序中的应用 264
15.3.2 范例小结 286
第四部分 行为型模式编程 288
第16章 责任链模式(Chain of Responsibility) 288
16.1 模式解说 288
16.2 结构和用法 289
16.2.1 模式结构 289
16.2.2 代码模板 290
16.2.3 问题讨论 292
16.3 范例与实践 293
16.3.1 责任链模式在项目审批系统中的应用 293
16.3.2 责任链模式对代码的重构 300
16.3.3 范例小结 302
第17章 命令模式(Command) 303
17.1 模式解说 303
17.2 结构和用法 304
17.2.1 模式结构 304
17.2.2 代码模板 305
17.2.3 问题讨论 308
17.3 范例与实践 309
17.3.1 Delphi的Action编程机制与命令模式 309
17.3.2 一个兼有撤销和重做功能的文本编辑器范例 318
17.3.3 范例小结 325
18.2.1 模式结构 327
18.2 结构与用法 327
第18章 解释器模式(Interpreter) 327
18.1 模式解说 327
18.2.2 代码模板 328
18.3 范例与实践 330
18.3.1 一个罗马数字到阿拉伯数字的转换器程序 330
18.3.2 范例小结 339
第19章 迭代子模式(Iterator) 341
19.1 模式解说 341
19.2 结构与用法 344
19.2.1 模式结构 344
19.2.2 代码模板 345
19.2.3 问题讨论 349
19.3 范例与实践 351
19.3.1 一个基于迭代子模式的图片播放器 351
19.3.2 范例小结 360
第20章 中介者模式(Mediator) 361
20.1 模式解说 363
20.2 结构与用法 363
20.2.1 模式结构 363
20.2.2 代码模板 365
20.2.3 问题讨论 369
20.3 范例与实践 369
20.3.1 中介者模式在聊天室系统中的应用 369
20.3.2 范例小结 377
第21章 备忘录模式(Memento) 379
21.1 模式解说 379
21.2 结构与用法 379
21.2.1 模式结构 379
21.2.2 代码模板 381
21.2.3 问题讨论 386
21.3.1 备忘录模式在地理信息系统中的应用 389
21.3 范例与实践 389
21.3.2 范例小结 406
第22章 观察者模式(Observer) 407
22.1 模式解说 407
22.2 结构与用法 409
22.2.1 模式结构 409
22.2.2 代码模板 410
22.2.3 问题讨论 415
22.3 范例与实践 416
22.3.1 观察者模式在界面色彩主题中的应用 416
22.3.2 范例小结 430
第23章 状态模式(State) 432
23.1 模式解说 432
23.2 结构与用法 434
23.2.1 模式结构 434
23.2.2 代码模板 435
23.2.3 问题讨论 438
23.3 范例与实践 439
23.3.1 状态模式在信用卡账户管理系统中的应用 439
23.3.2 范例小结 451
第24章 策略模式(Strategy) 453
24.1 模式解说 453
24.2 结构与用法 455
24.2.1 模式结构 455
24.2.2 代码模板 456
24.2.3 问题讨论 459
24.3 范例与实践 460
24.3.1 策略模式在酒店管理系统中的应用 460
24.3.2 范例小结 466
第25章 模板方法模式(Template Method) 468
25.1 模式解说 468
25.2.2 代码模板 472
25.2 结构与用法 472
25.2.1 模式结构 472
25.2.3 问题讨论 474
25.3 范例与实践 474
25.3.1 模板方法在离线数据库系统中的应用 474
25.3.2 范例小结 481
第26章 访问者模式(Visitor) 482
26.1 模式解说 482
26.2 结构与用法 484
26.2.1 模式结构 484
26.2.2 代码模板 486
26.2.3 问题讨论 491
26.3 范例与实践 495
26.3.1 访问者模式在薪酬福利管理中的应用 495
26.3.2 范例小结 509
主要参考文献 511