当谈论软件架构时,我们需要讨论什么?
1.架构
1.1 什么是软件架构?
软件架构的实质就是规划如何将系统切分成组件,并安排好组件之间的排列关系,以及组件之间互相通信的方式。
软件架构的终极目标是,用最小的人力成本满足构建和维护该系统的需求
1.2 整洁架构
1.3 六边形架构
2.原则
2.1 代码原则
- Single Responsibility Principle:单一职责原则
- Open Closed Principle:开闭原则
- Liskov Substitution Principle:里氏替换原则
- Law of Demeter:迪米特法则
- Interface Segregation Principle:接口隔离原则
- Dependence Inversion Principle:依赖倒置原则
2.2 组合原则
2.3 组件聚合
2.4 组件耦合
3. 分层与解耦
不论是水平分层还是垂直分层,其核心目的都是将更新频率不同的代码给分开,放入不同的组件中。
3.1 水平分层
- 表现层/UI层:负责系统的界面展示,通常包括Controller和VO等;
- 领域层/业务逻辑层:负责处理系统的业务逻辑,通常包括Service,Manager和DTO等;
- 数据层:负责与DB等底层数据存储介质通信,通常包括Mapper和DO等;
3.2 垂直分层
但是,仅仅做到水平分层是不够的。当业务逻辑比较复杂时,涉及的用例会非常多,这些用例之间的变更原因几乎肯定是不同的,所以还要进行垂直分层,将变更原因不一样的用例切分开。
例如,很多系统的修改操作和删除操作的变更原因和变更频率是不一样的,这时候可以考虑将修改和删除进行解耦。
3.3 解耦方式