第一部分 设计原则 3
第1章 当代的架构师和架构 3
1.1 软件架构到底是什么 4
1.1.1 将架构原则应用至软件中 4
1.1.2 什么属于架构,什么不属于 7
1.1.3 架构与决定相关 9
1.1.4 软件的需求和质量 11
1.2 架构师到底是什么 15
1.2.1 架构师的职责 15
1.2.2 你知道有多少种架构师吗 17
1.2.3 对架构师的一些常见误解 18
1.3 软件开发流程概览 21
1.3.1 软件生命周期 21
1.3.2 软件开发模型 23
1.4 小结 26
1.5 本章的墨菲法则 27
第2章 UML必要知识 28
2.1 UML概览 29
2.1.1 建模语言的出现动机和历史 30
2.1.2 UML的模式和使用方法 33
2.2 UML图表 37
2.2.1 用例图 38
2.2.2 类图 41
2.2.3 顺序图 47
2.3 小结 54
2.4 本章的墨菲法则 54
第3章 设计原则和模式 55
3.1 基本设计原则 55
3.1.1 警钟因何而鸣 57
3.1.2 结构化设计 58
3.1.3 分离关注点 61
3.2 面向对象设计 64
3.2.1 面向对象基本设计原则 64
3.2.2 高级原则 71
3.3 从原则到模式 77
3.3.1 模式究竟是什么 77
3.3.2 模式vs.惯用法 83
3.3.3 依赖注入 86
3.4 在设计时就考虑需求 89
3.4.1 可测试性 90
3.4.2 安全性 100
3.5 从对象到方面 107
3.5.1 面向方面编程 108
3.5.2 AOP实战 111
3.6 小结 116
3.7 本章的墨菲法则 117
第二部分 系统设计 121
第4章 业务层 121
4.1 业务逻辑层究竟是什么 121
4.1.1 业务层剖析 122
4.1.2 业务逻辑层的位置 125
4.1.3 业务层和其他层 128
4.1.4 创建业务层的模式 131
4.2 事务脚本模式 135
4.2.1 事务脚本模式概述 135
4.2.2 模式实战 138
4.3 表模块模式 144
4.3.1 表模块模式概述 145
4.3.2 表模块模式实战 149
4.4 活动记录模式 156
4.4.1 活动记录模式概述 157
4.4.2 活动记录模式实战 159
4.5 领域模型模式 167
4.5.1 领域模型模式概述 169
4.5.2 领域模型模式实战 172
4.6 小结 183
4.7 本章的墨菲法则 184
第5章 服务层 185
5.1 服务层究竟是什么 186
5.1.1 服务层的职责 187
5.1.2 究竟什么是服务 189
5.1.3 服务层中的服务 192
5.2 服务层模式实战 196
5.2.1 服务层模式概览 196
5.2.2 服务层模式实战 199
5.3 相关模式 203
5.3.1 远程门面模式 204
5.3.2 数据迁移对象模式 206
5.3.3 适配器模式 208
5.3.4 数据迁移对象和程序集 211
5.4 面向服务架构 221
5.4.1 SOA的原则 221
5.4.2 SOA不是什么 224
5.4.3 SOA和服务层 225
5.5 富Web前端的特例 229
5.5.1 重构服务层 229
5.5.2 设计AJAX服务层 233
5.5.3 实现AJAX服务层的安全性 237
5.6 小结 241
5.7 本章的墨菲法则 242
第6章 数据访问层 243
6.1 数据访问层究竟是什么 243
6.1.1 数据访问层的功能需求 244
6.1.2 数据访问层的职责 246
6.1.3 数据访问层和其他层 251
6.2 设计你自己的数据访问层 253
6.2.1 数据访问层的契约 254
6.2.2 插件模式 258
6.2.3 控制反转模式 264
6.2.4 为数据上下文打下基础 269
6.3 雕琢你自己的数据访问层 273
6.3.1 实现持久化层 273
6.3.2 实现查询服务 284
6.3.3 实现事务性语义 295
6.3.4 实现唯一性和标识映射 304
6.3.5 实现并发 311
6.3.6 实现延迟加载 316
6.4 使用O/RM工具增强数据访问层 323
6.4.1 对象/关系映射器 323
6.4.2 使用O/RM工具创建数据访问层 327
6.5 是否应该使用存储过程 335
6.5.1 有关存储过程的传言 335
6.5.2 那么动态SQL呢 340
6.6 小结 342
6.7 本章的墨菲法则 343
第7章 表现层 344
7.1 用户界面和表现层逻辑 345
7.1.1 表现层的职责 346
7.1.2 用户界面的职责 349
7.1.3 表现层的常见误区 350
7.2 表现层的演化 352
7.2.1 模型-视图-控制器模式 353
7.2.2 模型-视图-展示器模式 364
7.2.3 Presentation Model模式 370
7.2.4 选择用户界面模式 372
7.3 表现层的设计 374
7.3.1 视图中要显示什么数据 375
7.3.2 处理用户操作 382
7.4 表现层的惯用设计 392
7.4.1 Web表现层中的MVP 392
7.4.2 Windows平台中的MVP 398
7.5 小结 401
7.6 本章的墨菲法则 402
附录A Northwind Starter Kit 403
最后的思考 410