第0章 尘埃落定 1
0.1渊源 1
0.2成功与失败 2
0.2.1观察 2
0.2.2状态 3
0.2.3处方 4
0.3模式定义及解释 5
0.4深入理解模式 11
第一部分 模式剖析 15
第1章 问题之解决方案及其他 15
1.1问题之解决方案 15
1.1.1一个例子(1) 15
1.1.2重现与良好 16
1.2流程和物件 16
1.3“好”的解决方案 17
1.4驱动力:模式之心脏 19
1.4.1一个例子(4) 19
1.4.2 dysfunctional、 bad还是anti 21
1.5上下文 22
1.5.1一个例子(5) 23
1.5.2上下文的一般性 23
1.5.3独立上下文 24
1.5.4一个例子(6) 25
1.6一般性 25
1.7一图胜(逊)千言 27
1.8模式命名 29
1.8.1模式命名的语法分类 30
1.8.2字面命名还是隐喻 30
1.9模式是循序渐进的 31
1.10模式既是讲故事,又能发起对话 33
1.11模式不能代替思考 33
1.12从“问题-解决方案”到模式 34
第2章 多种多样的模式实现 35
2.1是否存在一个通用的模型呢 35
2.1.1 Observer模式:快速回顾 36
2.1.2结构的变化与角色 36
2.1.3行为的变化 37
2.1.4内部差异 38
2.1.5语言及平台的差别 39
2.1.6领域、环境相关的变化 40
2.1.7再论假设 41
2.2模式与框架 42
2.2.1工具和上下文环境 44
2.2.2两个框架的故事 44
2.3模式与形式主义 47
2.4通用性与特殊性 48
第3章 模式格式 50
3.1风格与实质 50
3.2格式的功能 52
3.3格式的元素 53
3.4细节 55
3.4.1案例 56
3.4.2图示 57
3.4.3 <code>…</code> 57
3.5鸟瞰图 58
3.5.1从金字塔到托盘 58
3.5.2模式骨架 58
3.5.3总结意图 60
3.5.4模式抽象 60
3.6不同的格式 60
3.6.1演变 61
3.6.2选择 62
3.7风格与实质(Redux) 63
第二部分 模式之间的关系 67
第4章 模式孤岛 67
4.1模式的联系 67
4.2设计实验:将模式作为孤岛 68
4.3第二个设计实验:交织在一起的模式 72
4.4模式密度 73
第5章 模式的互补性 75
5.1一个问题,多种解决方案 75
5.2互相竞争的模式 76
5.2.1以状态为例 76
5.2.2模式族 79
5.2.3迭代开发 80
5.2.4适配开发 83
5.2.5遵从康威定律 84
5.2.6与风格的设计对话 86
5.3互相合作的模式 87
5.3.1一个关于值的例子 88
5.3.2设计上的完善 88
5.4模式结合 89
5.4.1再论迭代 89
5.4.2再论适配编程 91
5.5互补性:竞争、完善、结合 92
第6章 模式复合 93
6.1常见模式排列 93
6.2从元素到复合 93
6.2.1 Pluggable Factory 94
6.2.2 Composite Command的两种视角 95
6.2.3模式复合的格式 96
6.3从补充到复合 97
6.3.1重申 97
6.3.2适配 99
6.4是元素还是组合 100
6.4.1组合的含义 100
6.4.2深入MVC 101
6.5复合分析与综合 102
6.5.1非设计模式的复合 102
6.5.2设计模式复合 103
第7章 模式序列 104
7.1模式讲述软件工程成功的故事 104
7.2模式故事 105
7.2.1一个小故事 105
7.2.2已经发表的故事 107
7.3从故事到序列 108
7.4模式的序列 109
7.4.1一个早期的例子 110
7.4.2模式序列既是流程也是物件 110
7.4.3再次回到以前提到的小故事 111
7.5回顾模式复合和模式互补 112
7.5.1重组 112
7.5.2再论Batch Iterator 113
7.5.3再论Interpreter 114
7.5.4再论Align Architecture and Organization 115
7.6回到上下文的问题 116
7.6.1定义上下文 116
7.6.2专用化与差异化 118
7.7模式间的联系 118
第8章 模式集合 120
8.1模式手册 120
8.2组织模式集合 121
8.3即时组织 121
8.4根据层次组织 122
8.4.1设计和架构 122
8.4.2惯用法 123
8.4.3混合层次 124
8.4.4层次 124
8.5根据领域组织 125
8.6根据分区组织 125
8.6.1阶层架构 126
8.6.2分区 126
8.7根据意图组织 126
8.7.1根据意图划分POSA的模式 127
8.7.2根据意图划分GoF的模式 128
8.7.3根据意图划分 DDD模式 128
8.7.4反思模式意图 128
8.8组织模式集合(重奏) 128
8.9问题框架 129
8.9.1问题框架 130
8.9.2问题框架和模式的对比 131
8.9.3问题框架与模式的组合 132
8.10模式符号学 132
8.11模式集合与风格 134
8.11.1 Unix接口设计模式 135
8.11.2 Web 2.0设计模式 136
8.11.3风格与概念一致性 137
8.12走向模式语言 138
第三部分 模式语言 141
第9章 语言的元素 141
9.1使用模式进行设计 141
9.2从模式故事和模式序列到模式语言 142
9.2.1一个未完成的故事 143
9.2.2序列的组合 145
第10章 模式网络及其他 147
10.1模式网络 147
10.2流程与物件 147
10.2.1流程的迭代本质 148
10.2.2具体的面向领域的引导 152
10.3单项最佳 153
10.4驱动力:模式语言之心脏 155
10.5模式上下文定义拓扑结构与架构风格 158
10.6模式构成词汇,序列展示语法 159
10.7通用性 162
10.7.1不同的模式序列 162
10.7.2模式的组合 163
10.8完整的语言胜过千幅图 163
10.9面向领域的命名帮助忆起模式语言 164
10.10模式语言展开对话并讲述很多故事 165
10.11路还很长 165
10.12模式语言对创造性智慧的回报 167
10.13从模式网络到模式语言 168
第11章 亿万种不同的实现 169
11.1众口难调 169
11.2渐进式成长 169
11.2.1面向系统的、进化的设计方法 170
11.2.2渐进式成长和敏捷开发 171
11.3并没有排斥重构 172
11.4一次一个模式 174
11.4.1明白手头上的问题的关键 174
11.4.2优先级驱动的设计决策 175
11.4.3模式集成先于模式实现 175
11.5基于角色的模式集成 176
11.5.1选择1:识别并且保持已经实现的角色 176
11.5.2选择2:识别并分离已经实现的角色 177
11.5.3选择3:将缺失角色分配给既有设计元素 178
11.5.4选择4:将缺失角色作为新设计元素来实现 179
11.5.5基于角色的模式集成和渐进式成长过程 180
11.6模式语言和参考架构 180
11.7模式语言与产品线架构 181
11.8从十亿个到一个…再到一些 184
第12章 模式语言的格式 185
12.1风格与本质 185
12.2格式的作用 185
12.3格式的元素 186
12.3.1展示全貌 187
12.3.2简洁与细节 187
12.3.3模式连接 189
12.3.4再说元素 189
12.4细节,细节,细节 190
12.4.1模式语言的格式 190
12.4.2鸟瞰图 190
12.4.3展示顺序 194
12.4.4示例 194
12.4.5细节程度 195
12.5再论风格与本质 197
第13章 模式与模式语言 198
13.1模式和模式语言:共性 198
13.1.1共同的核心属性 198
13.1.2共同的根源 199
13.1.3一个模式的模式语言 199
13.2模式与模式语言:区别 200
13.2.1模式和细节 200
13.2.2模式语言和交互 200
13.2.3两个独立的世界 201
13.3模式“对”模式语言 201
第14章 从模式到人 202
14.1模式以人为本 202
14.1.1模式价值体系 203
14.1.2人类读者 204
14.2对软件开发者的支持 204
14.3对软件使用者的支持 206
14.3.1用户界面 206
14.3.2用户需求 206
14.3.3交到用户手中 207
14.4对模式作者的支持 207
14.4.1协同写作 207
14.4.2作者研讨会 208
14.4.3牧放 208
14.5技术为人 209
第15章 模式的过去、现在和未来 210
15.1过去的3年 210
15.1.1模式与模式语言 210
15.1.2理论和概念 212
15.1.3重构与集成 212
15.1.4 GoF 213
15.2模式的现状 213
15.3模式的明天在哪里 214
15.3.1模式与模式语言 214
15.3.2理论和概念 216
15.3.3重构与集成 216
15.3.4支持其他的软件开发方法 216
15.3.5对其他学科的影响 217
15.3.6其他学科对我们的影响 217
15.4简述模式的未来 218
第16章 万事如意 219
模式概念总结 221
参考模式 225
参考文献 238