《架构整洁之道》

第一部分 概述

第1章 设计与架构究竟是什么

目标是什么

案例分析

第2章 两个价值维度

行为价值

架构价值

哪个价值维度更重要

艾森豪威尔矩阵

为好的软件架构而持续斗争

第二部分  从基础构件开始:编程范式

第3章  编程范式总览

结构化编程

面向对象编程

函数式编程

第4章  结构化编程

可推导性

goto是有害的

功能性降解拆分

形式化证明没有发生

科学来救场

测试

第5章  面向对象编程

封装

继承

多态

第6章  函数式编程

整数平方

不可变性与软件架构

可变性的隔离

事件溯源

第三部分  设计原则

第7章  SRP:单一职责原则

反面案例:代码合并

解决方案:门面模式(facade)

第8章  OCP:开闭原则

思想实验

依赖方向的控制

信息隐匿

第9章  LSP:里氏替换原则

继承的使用指导

正方形/长方形问题

LSP与软件架构

违反LSP的案例

第10章  ISP:接口隔离原则

ISP与编程语言

ISP与软件架构

第11章  DIP:依赖反转原则

稳定的抽象层

工厂模式

具体实现组件

第四部分  组件构建原则

第12章  组件

组件发展史

重定位技术

链接器

第13章  组件聚合

复用/发布等同原则(REP)

共同闭包原则(CCP)

共同复用原则(CRP)

组件聚合张力图

第14章  组件耦合

无依赖环原则

每周构建

消除循环依赖

循环依赖在组件依赖图中的影响

打破循环依赖

“抖动”

自上而下的设计

稳定依赖原则

稳定性

稳定性指标

并不是所有组件都应该是稳定的

抽象组件

稳定抽象原则

高阶策略应该放在哪里

稳定抽象原则简介

衡量抽象化程度

主序列

痛苦区

无用区

避开这两个区域

离主序列线的距离

第五部分  软件架构

第15章  什么是软件架构

开发(Development)

部署(Deployment)

运行(Operation)

维护(Maintenance)

保持可选项

设备无关性

垃圾邮件

物理地址寻址

第16章  独立性

用例

运行

开发

部署

保留可选项

按层解耦

用例的解耦

解耦的模式

开发的独立性

部署的独立性

重复

再谈解耦模式

第17章  划分边界

几个悲伤的故事

FitNesse

应在何时、何处画这些线

输入和输出怎么办

插件式架构

插件式架构的好处

第18章  边界剖析

跨边界调用

令人生畏的单体结构

部署层次的组件

线程

本地进程

服务

第19章  策略与层次

层次

第20章  业务逻辑

业务实体

用例

请求和响应模型

第21章  尖叫的软件架构

架构设计的主题

架构设计的核心目标

那web呢

框架是工具而不是生活信条

可测试的架构设计

第22章  整洁架构

依赖关系规则

业务实体

用例

接口适配器

框架与驱动程序

只有四层吗

跨越边界

哪些数据会跨越边界

一个常见的应用场景

第23章  展示器与谦卑对象

谦卑对象模式

展示器与视图

测试与架构

数据库网关

数据映射器

服务监听器

第24章  不完全边界

省掉最后一步

单向边界

门户模式

第25章  层次与边界

基于文本的冒险游戏:Hunt The Wumpus

可否采用整洁架构

交汇数据流

数据流的分割

第26章  Main组件

最细节化的部分

第27章  服务:宏观与微观

面向服务的架构

服务所带来的“好处”

解耦合的谬论

独立开发部署的谬论

运送猫咪的难题

对象化是救星

基于组件的服务

横跨型变更

第28章  测试边界

测试也是一种系统组件

可测试性设计

测试专用API

结构性耦合

安全性

第29章  整洁的嵌入式架构

“程序适用测试”测试

目标硬件瓶颈

整洁的嵌入式架构就是可测试的嵌入式架构

分层

硬件是实现细节

不要向HAL的用户暴露硬件细节

处理器是实现细节

操作系统是实现细节

面向接口编程与可替代性

DRY条件性编译命令

第六部分  实现细节

第30章  数据库只是实现细节

关系型数据库

为什么关系型数据库如此流行

假设磁盘不存在会怎样

实现细节

但性能怎么办你

一段轶事

第31章  Web是实现细节

无尽的摆钟

总结一下

第32章  应用程序框架是实现细节

框架作者

单向婚姻

风险

解决方案

不得不接受的依赖

第33章  案例分析:视频销售网站

产品

用例分析

组件架构

依赖关系管理

第34章  拾遗

 

 

 

 

posted @   shog808  阅读(167)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示