推荐序
前言
作者简介
第一部分 概述
第1章 架构与设计 3
我们的目标是什么 4
案例学习 5
本章小结 10
第2章 两种价值维度 11
行为价值 12
架构价值 12
哪个价值维度更重要 13
艾森豪威尔矩阵 14
为架构而战 15
第二部分 从基础构件开始:编程范式
第3章 范式概述 19
结构化编程 20
面向对象编程 20
函数式编程 20
思想小插曲 21
本章小结 21
第4章 结构化编程 22
可推导性 23
有害的goto 25
功能性降解拆分 26
形式化证明没有发生 26
依靠科学来拯救 26
测试 27
本章小结 28
第5章 面向对象编程 29
什么是封装 30
什么是继承 33
什么是多态 35
本章小结 40
第6章 函数式编程 41
整数的平方 42
不可变性与软件架构 43
可变性的隔离 44
事件溯源 45
本章小结 46
第三部分 设计原则
第7章 SRP:单一职责原则 49
反例1:意外的复用 50
反例2:代码合并 52
解决方案 52
本章小结 54
第8章 OCP:开闭原则 55
思想实验 56
依赖方向的控制 59
信息隐藏 59
本章小结 59
第9章 LSP:里氏替换原则 60
继承的使用指南 61
正方形/矩形问题 61
LSP和架构 62
违反LSP的示例 63
本章小结 64
第10章 ISP:接口隔离原则 65
ISP和编程语言 66
ISP和架构 67
本章小结 67
第11章 DIP:依赖反转原则 68
稳定的抽象 69
工厂模式 70
具体实现组件 71
本章小结 71
第四部分 组件原则
第12章 组件 75
组件简史 76
重定位技术 78
链接器 79
本章小结 80
第13章 组件内聚 81
复用/发布等价原则 82
共同闭合原则 83
共同复用原则 84
组件内聚张力图 85
本章小结 86
第14章 组件耦合 87
无依赖环原则 88
自顶向下的设计 93
稳定依赖原则 94
稳定抽象原则 99
本章小结 104
第五部分 架构
第15章 架构的定义 106
开发 108
部署 108
操作 109
运维 109
对可选项保持开放 110
设备独立性 111
垃圾邮件 113
物理寻址 114
本章小结 115
第16章 独立性 116
用例 117
操作 117
开发 118
部署 118
保持选项开放 119
层级解耦 119
解耦用例 120
解耦模式 120
可独立开发性 121
可独立部署性 121
复制 122
又一个解耦模式 123
本章小结 124
第17章 划分边界 125
几个悲伤的故事 126
菲特内斯公司 128
画哪些边界?画在哪里? 130
输入和输出 132
插件化架构 133
关于插件化的争论 134
本章小结 135
第18章 边界剖析 136
跨越边界 137
可怕的单体应用 137
部署组件 139
线程 139
本地进程 140
服务 140
本章小结 141
第19章 策略和级别 142
级别 143
本章小结 145
第20章 业务规则 146
实体 147
用例 148
请求和响应模型 150
本章小结 150
第21章 架构的自白 151
架构的主题 152
架构的目的 152
Web是架构吗 153
框架是工具,而不是生活方式 153
可测试的架构 154
本章小结 154
第22章 整洁架构 155
依赖规则 156
典型场景 160
本章小结 161
第23章 展示器和谦逊对象 162
谦逊对象模式 163
展示器和视图 163
测试和架构 164
数据库网关 164
数据映射 165
服务监听器 165
本章小结 165
第24章 不完全边界 166
跳到最后一步 167
单向边界 168
外观 168
本章小结 169
第25章 分层和边界 170
狩猎游戏 171
整洁架构 172
交汇数据流 174
数据流的分割 174
本章小结 176
第26章 Main组件 178
终极细节 179
本章小结 183
第27章 服务:宏观与微观 184
面向服务的架构 185
服务化所带来的好处 185
运送小猫的难题 187
对象化是救星 188
基于组件的服务 189
跨领域问题 190
本章小结 191
第28章 测试边界 193
测试也是一种系统组件 194
可测试性设计 194
测试专用API 195
本章小结 196
第29章 整洁嵌入式架构 197
程序适用测试 200
目标硬件瓶颈 202
本章小结 210
第六部分 实现细节
第30章 数据库只是实现细节 212
关系型数据库 213
数据库系统为什么如此流行 213
假如没有磁盘 214
实现细节 215
数据存储的性能 215
轶事 215
本章小结 217
第31章 Web 只是实现细节 218
无尽的钟摆 219
要点 220
本章小结 221
第32章 应用程序框架只是
实现细节 222
框架开发者 223
不对等的关系 223
风险 224
解决方案 224
主动做出选择 225
本章小结 225
第33章 案例研究:
视频销售 226
产品 227
用例分析 227
组件架构 228
依赖管理 230
本章小结 230
第34章 细节决定成败 231
按层组包 232
按功能组包 233
端口和适配器 234
按组件组包 235
实现细节 239
组织方式与封装 239
其他解耦模式 242
本章小结 243
附录 架构考古学 244