目录
引子
谁适合读这本书? xxviii
我们知道你的大脑在想什么 xxix
元认知 xxxi
让你的大脑就范 xxxiii
技术审校 xxxvi
致谢 xxxvii
目录(概览)
引子 xxvii
1 欢迎来到设计模式世界:设计模式入门 1
2 让你的对象知悉现况:观察者模式 37
3 装饰对象:装饰者模式 79
4 烘烤OO的精华:工厂模式 109
5 独一无二的对象:单件模式 169
6 封装调用:命令模式 191
7 随遇而安:适配器与外观模式 235
8 封装算法:模板方法模式 275
9 管理良好的集合:迭代器与组合模式 315
10 事物的状态:状态模式 385
11 控制对象访问:代理模式 429
12 模式中的模式:复合模式 499
13 真实世界中的模式:与设计模式相处 577
14 附录A:剩下的模式 611
目录(真正的目录)
1欢迎来到设计模式世界
模拟鸭子应用 2
Joe想到继承 5
利用接口如何? 6
软件开发的不变真理 8
分开变化和不变部分 10
设计鸭子的行为 11
测试鸭子的代码 18
动态地设置行为 20
封装行为的大局观 22
“有一个”比“是一个”更好 23
策略模式 24
共享模式词汇的威力 28
我如何使用设计模式? 29
设计箱内的工具 32
习题解答 34
气象观测站 39
认识观察者模式 44
出版者+订阅者=观察者模式 45
五分钟短剧:观察主题 48
定义观察者模式 51
松耦合的威力 53
设计气象站 56
实现气象站 57
使用Java内建的观察者模式 64
java.util.Observable的黑暗面 71
设计箱内的工具 74
习题解答 78
欢迎来到星巴兹咖啡 80
开放-关闭原则 86
认识装饰者模式 88
以装饰者构造饮料订单 89
定义装饰者模式 91
装饰饮料 92
写下星巴兹的代码 95
真实世界的装饰者:Java I/O 100
编写自己的Java I/O装饰者 102
设计箱内的工具 105
习题解答 106
4 烘烤O O的精华
当看到“new”,就会想到“具体” 110
对象村比萨 112
封装创建对象的代码 114
建立一个简单比萨工厂 115
定义简单工厂 117
给比萨店使用的框架 120
允许子类做决定 121
让我们开一家比萨店吧 123
声明一个工厂方法 125
认识工厂方法模式 131
平行的类层级 132
定义工厂方法模式 134
一个很依赖的比萨店 137
看看对象依赖 138
依赖倒置原则 139
再回到比萨店…… 144
原料家族 145
建造原料工厂 146
看看抽象工厂 153
幕后花絮 154
定义抽象工厂模式 156
比较工厂方法和抽象工厂 160
设计箱内的工具 162
习题解答 164
5 独一无二的对象
独一无二 170
小小单件 171
剖析经典的单件模式实现 173
单件的告白 174
巧克力工厂 175
定义单件模式 177
Houston,我们遇到麻烦了…… 178
化身为JVM 179
处理多线程 180
单件Q&A 184
设计箱内的工具 186
习题解答 188
“观察者模式”:
6 封装调用
巴斯特家电自动化公司 192
遥控器 193
看一下厂商的类 194
同时,回到餐厅…… 197
研究餐厅的交互 198
对象村餐厅的角色和职责 199
从餐厅到命令模式 201
第一个命令对象 203
定义命令模式 206
命令模式与遥控器 208
实现遥控器 210
逐步测试遥控器 212
写文档的时刻到了 215
使用状态实现撤销 220
每个遥控器都需要Party模式! 224
使用宏命令 225
命令模式的更多用途:队列请求 228
命令模式的更多用途:日志请求 229
设计箱内的工具 230
习题解答 232
7 随遇而安
我们周围的适配器 236
面向对象适配器 237
适配器模式解析 241
定义适配器模式 243
对象和类的适配器 244
今夜话题:对象适配器和类适配器 247
真实世界的适配器 248
将枚举适配到迭代器 249
今夜话题:装饰者模式和适配器模式 252
甜蜜的家庭影院 255
灯光、相机、外观! 258
构造家庭影院外观 261
定义外观模式 264
“最少知识”原则 265
设计箱内的工具 270
习题解答 272
8 封装算法
快速搞定几个咖啡和茶的类 277
抽取咖啡和茶 280
更进一步的设计…… 281
抽象prepareRecipe() 282
我们做了什么? 285
认识模板方法 286
走,泡茶去 287
模板方法带给我们什么? 288
定义模板方法模式 289
再靠近一点 290
对模板方法进行挂钩…… 292
使用钩子 293
咖啡?茶?执行测试程序 294
好莱坞原则 296
好莱坞原则和模板方法 297
荒野中的模板方法 299
用模板方法排序 300
来排序鸭子吧…… 301
比较鸭子 302
观察鸭子排序的内部运作 304
写一个Swing的窗口程序 306
Applet 307
今夜话题:模板方法和策略 308
设计箱内的工具 311
习题解答 312
9 管理良好的集合
对象村餐厅和对象村煎饼屋合并了 316
比较菜单的实现 318
可以封装遍历吗? 323
认识迭代器模式 325
在餐厅菜单中加入一个迭代器 326
鸟瞰目前的设计 331
利用java.util.Iterator来清理 333
这为我们带来什么好处? 335
定义迭代器模式 336
单一责任 339
迭代器与集合 348
Java 5 的迭代器和集合 349
正当我们认为这很安全的时候…… 353
定义组合模式 356
利用组合设计菜单 359
实现组合菜单 362
闪回到迭代器 368
空迭代器 372
迭代器和组合凑在一起的魔力…… 374
设计箱内的工具 380
习题解答 381
1 0事物的状态
如何实现状态?(办公室隔间对话) 387
状态机101 388
状态机代码的第一个版本 390
该来的躲不掉……变更请求! 394
混乱的状态…… 396
定义状态接口和类 399
实现我们的状态类 401
重新改造糖果机 402
定义状态模式 410
状态 vs.策略模式 411
精神检查…… 417
我们差点儿忘了! 420
设计箱内的工具 423
习题解答 424
11控制对象访问
监控糖果机 430
远程代理的角色 434
RMI浏览 437
GumballMachine远程代理 450
代理幕后花絮 458
定义代理模式 460
准备虚拟代理 462
设计CD封面虚拟代理 464
虚拟代理的幕后花絮 470
使用Java API的代理 474
五分钟短剧:保护主题 478
创建动态代理 479
代理动物园 488
设计箱内的工具 491
习题解答 492
12模式中的模式
复合模式 500
与鸭子重聚 501
加入一个适配器 504
加入一个装饰者 506
加入一个工厂 508
加入一个组合和一个迭代器 513
加入一个观察者 516
模式概览 523
鸭瞰:类图 524
模型-视图-控制器之歌 526
设计模式是MVC的钥匙 528
戴着模式的有色眼镜看MVC 532
利用MVC控制节拍…… 534
模型 537
视图 539
控制器 542
探索策略 545
适配模型 546
现在我们准备写HeartController 547
MVC与Web 549
设计模式和Model 2 557
设计箱内的工具 560
习题解答 561
13真实世界中的模式
对象村指南 578
定义设计模式 579
更近地观察设计模式的定义 581
愿力与你同在 582
模式类目 583
如何创建模式 586
想当一个设计模式作家吗? 587
组织设计模式 589
用模式思考 594
使用模式的心智 597
别忘了共享词汇的威力 599
共享词汇的五种方式 600
和四人组一同巡游对象村 601
你的旅途刚刚开始…… 602
其他设计模式资源 603
模式动物园 604
以反模式歼灭恶势力 606
设计箱内的工具 608
离开对象村…… 609
i索引 631
桥接 612
生成器 614
责任链 616
蝇量 618
解释器 620
中介者 622
备忘录 624
原型 626
访问者 628
A 附录A:剩下的模式
| 回书目 上一节 下一节 |
|
· 第六章 你能帮我吗?.. · Linux笔试面试题选摘测.. · 08年5月软考网管上午真.. · 性能测试从零开始 目录 · 08年5月软考网工上午真.. · 上周拒绝服务攻击(DDo.. |
· 08年5月各大网上书店及.. · 2008年5月24日软考试题.. · 软件设计师专家临考模.. · 上周网络管理员专家自.. · 网络工程师自测获奖名.. · 08年4月各大网上书店及.. |
|
||||
| · NAC安全访问控制 · 网络布线测试仪器 · Windows Server 2008专.. · Windows远程桌面应用 · 网络故障排除宝典 · 运营商封堵ADSL共享 中.. · 解析35岁技术人的价值.. · 世纪枭雄比尔盖茨的王.. |
· 主流品牌防火墙配置 · ASP.NET开发教程 · 超级计算机TOP500专题 · Vista SP1对决XP SP3 · SQL Server 2008/2005.. · 程序员如何成长? · C#技术开发指南 · 虚拟化技术还有点“虚” |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Windows远程桌面应用 · C#技术开发指南 · Apache技术专题 |
· Windows集群服务应用 · C#技术开发指南 · 国际文档格式标准开战 · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 |
|||