===== 程序处理流程 =====
* 红色:必要步骤
* 绿色:健壮性步骤
- 获取参数
- 标准化参数
- 验证参数
- 流控
- 构建核心业务对象
- 填充核心业务对象需要的其他数据
- 处理核心业务对象
- 转换成其他核心业务对象(重复步骤5,6,7)
- 有些业务比较复杂或为了便于并发考虑,处理流程中可能会有多个核心业务对象
- 处理返回结果
===== 模块划分逻辑 =====
* dal 包定位:读取存储
* dao 包定位:存放DO
* OrderDO.java
* MysqlDAO.java
* domain 包定位:业务逻辑实现
* entity 包定位:业务对象的数据, 如果某些功能只依赖这些业务数据,则应该逻辑放在实体内部 (信息专家原则,面向对象)
* RequestBO.java
* service 包定位:业务的具体实现逻辑,Service之间可能会相互依赖,可以利用spring来处理
* HandlerService1.java
* HandlerService2.java
* HandlerService3.java
* infrastructure 包定位:基础功能的业务类,于业务逻辑无关
* EmailService.java
* util
* Util.java
* dal层:参数,返回值都不是业务对象
* infrastructure层:参数,返回值都不是业务对象
* util层:参数,返回值都不是业务对象
* domain.service层:参数,返回值都是业务对象
业务对象数据要尽量严谨,可能为空的对象都是Optional类型,如下例子
{{:pasted:20181028-195637.png}}