老虎吃天,总要找到下口点。
0. 分解为子系统(subsystems)或包(packages)
- 常用的子系统(对应于包):
- 业务规则
- 用户界面
- 数据库访问;
- 对系统的依赖性;
- 比如开发一个运行于 windows 的程序,可将与 windows 相关的系统调用都隔离起来,放到一个 windows 接口子系统中,如此一来,日后把程序移植到 Mac 或 Linux 系统,只要适配新的接口子系统就可以了;
- 数据与操作与控制;
- 数据的归数据
- 操作的归操作
- 流程的归流程,控制的归控制;
1. 分解之分层
分层是一种逻辑概念。
- 分层之逻辑业务的分层;
- 对逻辑业务进行分层,如何在代码层面体现逻辑的分层:
- 对类、接口函数等单元组件构建设计合理的扇入、扇出:
- 扇入:依赖,对应着层次体系中的下游,下层;
- 扇出:支撑,对应着层次体系中的中层,向上提供接口,作为上层的扇入;
- 对逻辑业务进行分层,如何在代码层面体现逻辑的分层:
- 分层之代码层面,类的层次体系;
- 类的继承,天然在逻辑上构成一种逻辑关系;
- 层次体系也分横向和纵向;
- 多态之父类引用指向子类对象,纵向打通整个层次体系;
2. 分解之模块化
- 模块化即为对功能进行拆分;
- 模块的展现:
- 类
- 函数
- 包
- 文件夹
- 等。。。