第1章 如何学习设计模式 1
1.1 软件开发遇到的问题 1
1.2 面向对象的设计原则 2
1.3 设计模式的产生和分类 4
1.4 设计模式学习路线 5
1.5 小结 7
第2章 学习设计模式的工具 8
2.1 建模语言概述 8
2.2 设计模式的工具使用 9
2.3 UML类图 11
2.4 小结 20
第3章 单例模式(Singleton) 21
3.1 哪里会使用到单例模式 21
3.2 单例模式的实现原理 22
3.3 双检测锁机制的单例模式 24
3.4 单例模式在日志管理中的实际应用 26
3.5 单例模式在数据库连接池管理中的实际应用 34
3.6 小结 36
第4章 简单工厂模式(Simple Factory) 37
4.1 哪里会使用到简单工厂模式 37
4.2 简单工厂模式的实现原理 41
4.3 简单工厂模式在翻译器中的实际应用 42
4.4 小结 46
第5章 工厂方法模式(Factory Method) 47
5.1 哪里会使用到工厂方法模式 47
5.2 工厂方法模式的实现原理 50
5.3 简单工厂模式与工厂方法模式比较 51
5.4 工厂方法模式在Spring中的实际应用 55
5.5 小结 73
第6章 抽象工厂模式(Abstract Factory) 74
6.1 哪里会使用到抽象工厂模式 74
6.2 抽象工厂模式的实现原理 78
6.3 抽象工厂模式在翻译器中的实际应用 80
6.4 小结 82
第7章 原型模式(Prototype) 83
7.1 哪里会使用到原型模式 83
7.2 原型模式的实现原理 87
7.3 原型模式在Java中的实际应用 88
7.4 小结 97
第8章 创建者模式(Builder) 98
8.1 哪里会使用到创建者模式 98
8.2 创建者模式的实现原理 100
8.3 创建者模式在薪酬模块中的实际应用 102
8.4 小结 108
第9章 适配器模式(Adapter) 109
9.1 哪里会使用到适配器模式 109
9.2 适配器模式的实现原理 114
9.3 在模块的接口间使用适配器模式 115
9.4 适配器模式在Spring中的实际应用 127
9.5 适配器模式在JUnit中的实际应用 137
9.6 小结 146
第10章 门面模式(Facade) 147
10.1 哪里会使用到门面模式 147
10.2 门面模式的实现原理 152
10.3 门面模式在Spring JDBC中的实际应用 153
10.4 门面模式在Hibernate中的实际应用 180
10.5 小结 195
第11章 代理模式(Proxy) 196
11.1 哪里会使用到代理模式 196
11.2 代理模式的实现原理 200
11.3 动态代理的实现 201
11.4 面向方面的程序编程 204
11.5 代理模式在Struts 2中的实际应用 220
11.6 小结 227
第12章 合成模式(Composite) 228
12.1 哪里会使用到合成模式 228
12.2 合成模式的实现原理 233
12.3 合成模式在JUnit中的实际应用 235
12.4 合成模式在薪酬系统中的实际应用 249
12.5 小结 252
第13章 享元模式(Flyweight) 253
13.1 哪里会使用到享元模式 253
13.2 享元模式的实现原理 254
13.3 采用单例模式和享元模式来实现数据库连接池 256
13.4 小结 267
第14章 装饰模式(Decorator) 268
14.1 哪里会使用到装饰模式 268
14.2 装饰模式的实现原理 276
14.3 装饰模式在Java中的实际应用 277
14.4 小结 282
第15章 桥模式(Bridge) 283
15.1 哪里会使用到桥模式 283
15.2 桥模式的实现原理 288
15.3 桥模式在网上商城系统的实际应用 290
15.4 小结 293
第16章 策略模式(Strategy) 294
16.1 哪里会使用到策略模式 294
16.2 策略模式的实现原理 298
16.3 策略模式在Spring中的实际应用 299
16.4 小结 308
第17章 迭代器模式(Iterator) 309
17.1 哪里会使用到迭代器模式 309
17.2 迭代器模式的实现原理 315
17.3 迭代器模式在Java中的具体实现原理 316
17.4 迭代器模式在公交售票系统的使用 321
17.5 小结 323
第18章 模板方法模式(Template Method) 324
18.1 哪里会使用到模板方法模式 324
18.2 模板方法模式的实现原理 329
18.3 模板方法模式在JUnit中的使用 330
18.4 模板方法模式在Servlet中的应用 336
18.5 采用模板方法模式操作数据库的实际应用 344
18.6 小结 361
第19章 中介者模式(Mediator) 362
19.1 哪里会使用到中介者模式 362
19.2 中介者模式的实现原理 366
19.3 中介者模式在消息队列的实际应用 368
19.4 小结 370
第20章 访问者模式(Visitor) 371
20.1 哪里会使用到访问者模式 371
20.2 访问者模式的实现原理 380
20.3 访问者模式在银行排号机系统的实际应用 382
20.4 小结 383
第21章 职责链模式(Chain of Responsibility) 384
21.1 哪里会使用到职责链模式 384
21.2 职责链模式的实现原理 388
21.3 职责链模式在Struts中的实现 389
21.4 职责链模式在OA办公中的实际应用 398
21.5 小结 401
第22章 状态模式(state) 402
22.1 哪里会使用到状态模式 402
22.2 状态模式的实现原理 410
22.3 状态模式在工作流引擎中的实际应用 411
22.4 小结 414
第23章 解释器模式(Interpreter) 415
23.1 哪里会使用到解释器模式 415
23.2 解释器模式的实现原理 419
23.3 解释器模式在数学公式中的实际应用 421
23.4 小结 423
第24章 观察者模式(observer) 424
24.1 哪里会使用到观察者模式 424
24.2 观察者模式的实现原理 430
24.3 观察者模式在Spring中的实现 437
24.4 观察者模式在网上商城的实际应用 441
24.5 小结 444
第25章 命令模式(Command) 445
25.1 哪里会使用到命令模式 445
25.2 命令模式的实现原理 447
25.3 命令模式在Struts中的实际应用 448
25.4 小结 485
第26章 备忘录模式(Memento) 486
26.1 哪里会使用到备忘录模式 486
26.2 备忘录模式的实现原理 489
26.3 用备忘录模式实现公文系统撤回功能的实际应用 490
26.4 小结 492
第27章 综合应用设计模式实现MVC框架 493
27.1 MVC模式 493
27.1.1 MVC模式的核心思想 493
27.1.2 实现MVC框架需要考虑的内容 494
27.2 建立MVC框架的开发环境 495
27.3 实现视图层功能 503
27.4 实现控制层功能 507
27.4.1 实现返回页面的映射方式 507
27.4.2 实现页面数据的传递 508
27.4.3 实现Servlet控制器 511
27.5 实现持久层功能 512
27.6 用MVC框架实现信息发布系统 517
27.6.1 建立项目及配置文件 518
27.6.2 实现信息发布的视图层代码 522
27.6.3 实现信息发布的控制层代码 523
27.6.4 实现信息发布的模型层代码 527
27.6.5 实现信息发布的持久层代码 531
27.6.6 运行信息发布系统 543
27.7 小结 547