第1篇 设计之要 2
第1章 设计之道 2
1.1 计划的设计与演进的设计 2
1.2 架构设计的标准 4
1.3 过度设计,还是简单设计 6
1.4 需要设计模式吗 8
1.5 重构是必然的 9
1.6 UML重要吗 10
1.7 测试驱动开发 11
第2章 封装变化 13
2.1 设计模式之鹄的 13
2.2 如何封装变化 14
2.2.1 封装用户请求的变化 14
2.2.2 封装对象创建的变化 17
2.2.3 封装算法实现的变化 21
2.3 依赖注入 26
第3章 体验重构 28
3.1 一个阶乘容器 29
3.2 代码的坏味道 30
3.3 需求发生变化 31
3.4 运用重构利器 32
3.5 引入设计模式 35
第4章 测试驱动开发实践 39
4.1 发现价值与生产价值 40
4.2 在测试驱动开发过程中运用面向对象编程思想 44
4.3 适时小结 50
4.4 收获价值 50
4.5 无上之力 51
第5章 设计,由你掌握 53
5.1 从需求开始 54
5.2 需求改变了 56
5.3 如果不熟悉设计模式 56
5.4 山穷水尽疑无路 60
5.5 柳暗花明又一村 62
5.6 尽善尽美的结局 69
第2篇 NET Framework与设计模式第6章 Factory Method模式 74
6.1 “嫁祸江东”之计 74
6.2 WebRequest对象的创建 78
6.3 具体对象创建的彻底解耦 80
第7章 Composite模式 89
7.1 一个字处理软件的实例 89
7.2 NET Framework中的控件 95
7.3 “复合方式”的Composite模式 98
第8章 Decorator模式 107
8.1 一步一步走向Decorator模式 107
8.2 NET Framework中流的处理 117
第9章 Iterator模式 122
9.1 学会分辨对象的职责 122
9.2 Iterator模式大观园 127
9.3 Iterator模式在NET Framework中的实现 128
9.4 透晓foreach语句的实质 132
第10章 Strategy模式 136
10.1 一个税务系统实例 136
10.2 NET Framework中的Provider对象 138
10.3 NET Framework中的配置节管理 142
第3篇 媒体播放器的设计之旅第11章 面向对象设计与Factory Method模式 146
11.1 拙劣的设计意味着噩梦的产生 146
11.2 走向面向对象设计之路 148
11.3 接口分离 153
11.4 引入Factory Method模式 157
11.5 飞翔的翅膀 161
第12章 探讨Adapter模式 164
12.1 设计走向死胡同 164
12.2 引入Adapter模式 165
12.3 类的Adapter模式 165
12.4 对象的Adapter模式 169
第13章 从Adapter模式到Decorator模式 176
13.1 考察对象的Adapter模式 176
13.2 引入Decorator模式 181
13.3 正宗的Decorator模式 184
第14章 Visitor模式探索 188
14.1 Visitor模式是否可行 188
14.2 实现Visitor模式 189
14.3 改进后的Visitor模式 195
14.4 合理运用Visitor模式 200
第15章 再谈Adapter模式 202
15.1 新的应用场景 202
15.2 “狼”与“羊”的关系 203
15.3 引入Adapter模式 206
第4篇 设计模式应用实践 214
第16章 Abstract Factory模式应用实践 214
16.1 需求分析——报表组件 214
16.2 糟糕的设计 215
16.3 引入Abstract Factory模式 217
16.4 工厂对象的使用 220
16.5 引入Adapter模式扩展Abstract Factory结构 222
16.6 接口还是抽象类 223
第17章 Builder模式应用实践 227
17.1 需求分析——装配设备对象 227
17.2 糟糕的设计 230
17.3 引入Builder模式 233
17.4 从容应对扩展 237
第18章 Command模式应用实践 239
18.1 需求分析——安装向导 239
18.2 糟糕的设计 240
18.3 引入Command模式 243
18.4 进一步完善 246
第19章 Chain Of Responsibility模式应用实践 251
19.1 需求分析——应用服务管理器 252
19.2 简单有效的设计 254
19.3 利用抽象引入Template Method模式 258
19.4 方向错误了吗 262
19.5 Chain Of Responsibility模式 264
第20章 Observer模式应用实践 276
20.1 需求分析——监控设备状态 277
20.2 引入Observer模式 278
20.3 利用事件与委托改进Observer模式 282
第21章 Proxy模式应用实践 287
21.1 需求分析——设备控件显示 287
21.2 引入Proxy模式 288
21.3 完善设计 293
第22章 复合的设计模式应用实践 299
22.1 需求分析 299
22.2 糟糕的设计 300
22.3 面向对象的设计思想 302
22.4 引入Strategy模式 303
22.5 需求发生变化 307
22.6 引入Template Method模式 307
22.7 合理的设计才是最好的设计 311
22.8 引入Bridge模式 312
22.9 接口分离 319
22.10 引入Abstract Factory模式 323
第5篇 .NET体系架构设计 332
第23章 软件体系架构设计 332
23.1 分层式架构设计 333
23.2 分层式架构设计的优劣 334
23.3 PetShop架构设计的版本演化 335
23.4 PetShop 4.0的系统架构设计 338
第24章 数据访问层设计 342
24.1 数据库样式 342
24.2 数据库对象 344
24.3 SQL语句之瘤 348
24.4 运用ORM的思想 350
24.5 事务的处理 352
24.6 具有简单工厂特质的Abstract Factory模式 355
第25章 消息处理 359
25.1 MSMQ的实现 359
25.1.1 消息处理模块的组成 359
25.1.2 消息接口 360
25.1.3 消息接口的实现 361
25.1.4 消息工厂 363
25.1.5 后台处理应用程序 365
25.1.6 引入Strategy模式 367
25.2 分布式处理 368
第26章 ASP.NET缓存 370
26.1 ASP.NET缓存概述 370
26.2 SqlCacheDependency特性 373
26.2.1 利用aspnet_regsql工具 373
26.2.2 利用SqlCacheDependencyAdmin类 376
26.3 ASP.NET缓存在PetShop 4.0中的实现 377
26.3.1 CacheDependency接口 377
26.3.2 CacheDependency实现 378
26.3.3 CacheDependency工厂 379
26.3.4 引入Facade模式 381
26.3.5 引入Proxy模式 384
第27章 业务逻辑层设计 387
27.1 与领域专家合作 388
27.2 业务逻辑层的模式应用 391
27.3 PetShop的业务逻辑层设计 391
27.4 与数据访问层的通信 395
27.5 面向接口设计 396
第28章 表示层设计 400
28.1 MVC模式 400
28.2 Page Controller模式的应用 402
28.3 ASP.NET控件 405
28.4 ASP.NET 2.0新特性 411
28.4.1 Profile特性 412
28.4.2 Membership特性 416
28.4.3 ASP.NET登录控件 423
28.4.4 Master Page特性 424