===== 程序处理流程 ===== * 红色:必要步骤 * 绿色:健壮性步骤 - 获取参数 - 标准化参数 - 验证参数 - 流控 - 构建核心业务对象 - 填充核心业务对象需要的其他数据 - 处理核心业务对象 - 转换成其他核心业务对象(重复步骤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}}