- 软件架构的终极目标:用最小的人力成本来满足构建和维护该系统的需求。
- 系统的两个价值维度:
- 行为价值
- 架构价值
- 编程范式
- 结构话编程
- 面向对象编程
- 函数式编程
- SOLID设计原则:
- SRP:单一职责原则。每个软件模块有且只有一个需要被改变的理由。
- OCP:开闭原则。如果软件系统想要更容易被改变,那么其设计就必须允许新增代码来修改系统行为,而不是只能靠修改原来的代码。
- LSP:里式替换原则。如果想要用可替换的组件来构建软件系统,那么这些组件就必须遵守同一个约定,一遍让这些组件可以互相替换。
- ISP:接口隔离原则。避免不必要的依赖。
- DIP:依赖翻转原则。高层策略性的代码不应该依赖实现底层细节的代码,恰恰相反,那些实现底层细节的代码应该依赖高层策略性的代码。
大家在看书时尽量在前面对这些原则有个比较深的印象,因为后面章节会经常提起这几个原则。
- 稳定依赖
- 依赖关系必须要指向更稳定的方向。
- 任何一个我们预期会经常变更的组件都不应该被一个难于修改的组件所依赖,否则这个多变的组件将会变的非常难以被修改。
- 架构设计
- 业务逻辑是一个系统存在的意义,属于核心功能。这些业务逻辑应该保持纯净,不要掺杂用户界面或者所使用的数据库相关的东西。架构设计应该基于业务逻辑设计,而不关心具体实现细节,比如使用什么数据库。
- 依赖关系规则
- 源码中的依赖关系必须只指向同心圆的内层,即由低层机制指向高层策略。我们不应该让外层圆中发生的任何变更影响到内层圆的代码。
- 整体设计就是划分边界,并在边界处遵循依赖关系方向——由底层指向高层。
- 面向服务的架构不一定能解决所有问题,服务之间也会存在一定程度的耦合,一变都变,难以维护。
- 数据库、web和应用框架都只是实现细节,不是架构设计首要考虑的方面。
《架构整洁之道》整理
最新推荐文章于 2025-05-03 18:12:02 发布