第1章 模式 1
1.1 模式是什么 1
1.2 模式之所以为模式 5
1.3 模式类型 7
1.3.1 架构模式 8
1.3.2 设计模式 8
1.3.3 成例 9
1.3.4 模式分类在软件开发中的用途 10
1.4 模式之间的关系 11
1.5 模式的描述 13
1.6 模式与软件架构 15
1.6.1 作为思维构件的模式 15
1.6.2 打造异质架构 16
1.6.3 模式与方法 16
1.6.4 实现模式 16
1.7 总结 17
第2章 架构模式 18
2.1 导言 18
2.2 从混乱到有序 19
2.2.1 Layers模式 21
2.2.2 Pipes and Filters模式 34
2.2.3 Blackboard模式 46
2.3 分布式系统 62
2.4 交互式系统 78
2.4.1 Model-View-Controller模式 79
2.4.2 Presentation-Abstraction-Control模式 93
2.5 可适应系统 109
2.5.1 Microkernel模式 110
2.5.2 Reflection模式 124
第3章 设计模式 143
3.1 导言 143
3.2 结构分解模式 144
3.3 工作组织模式 157
3.4 访问控制 169
3.5 管理模式 178
3.5.1 Command Processor模式 179
3.5.2 View Handler模式 188
3.6 通信模式 198
3.6.1 Forwarder-Receiver模式 199
3.6.2 Client-Dispatcher-Server模式 209
3.6.3 Publisher-Subscriber模式 219
第4章 成例 223
4.1 导言 223
4.2 成例的用途 224
4.3 成例与风格 224
4.4 到哪里去寻找成例 226
第5章 模式系统 233
5.1 模式系统是什么 233
5.2 模式分类 235
5.2.1 模式类别 235
5.2.2 问题类别 235
5.2.3 分类方案 236
5.2.4 比较 237
5.3 选择模式 238
5.4 作为实现指南的模式系统 239
5.5 模式系统的演化 241
5.5.1 模式描述的演化 242
5.5.2 创意写作工坊式审阅 242
5.5.3 模式发掘 243
5.5.4 添加新模式 243
5.5.5 删除过时的模式 244
5.5.6 扩展组织方案 244
5.6 总结 246
第6章 模式与软件架构 247
6.1 导言 247
6.1.1 软件架构 247
6.1.2 组件 248
6.1.3 关系 249
6.1.4 视图 250
6.1.5 功能特征和非功能特征 251
6.1.6 软件设计 251
6.1.7 小结 252
6.2 软件架构中的模式 252
6.2.1 开发方法 253
6.2.2 开发流程 253
6.2.3 架构风格 254
6.2.4 框架 255
6.3 软件架构支持技术 256
6.3.1 抽象 256
6.3.2 封装 257
6.3.3 信息隐藏 257
6.3.4 模块化 257
6.3.5 分离关注点 257
6.3.6 耦合与内聚 258
6.3.7 充分、完整、简单 258
6.3.8 策略与实现分离 258
6.3.9 接口与实现分离 259
6.3.10 单个引用点 259
6.3.11 分而治之 259
6.3.12 小结 259
6.4 软件架构的非功能特征 260
6.4.1 可修改性 260
6.4.2 互操作性 261
6.4.3 效率 262
6.4.4 可靠性 262
6.4.5 可测试性 262
6.4.6 可重用性 263
6.5 总结 264
第7章 模式界 265
7.1 起源 265
7.2 领军人物及其成果 266
7.3 模式界 267
第8章 模式的发展方向 269
8.1 模式挖掘 269
8.1.1 软件架构模式 269
8.1.2 组织模式 270
8.1.3 领域特定的模式 270
8.1.4 模式语言 271
8.2 模式的组织和模式索引 271
8.3 方法和工具 272
8.4 算法、数据结构和模式 273
8.5 模式的规范化 273
8.6 结语 274
表示法 275
术语表 279
参考文献 284
索引 296