4. 工程结构规约
1. 前提回顾
类图、用例图、时序图、状态图和活动图
- 用例图:关注用户角色和用户行为。在需求分析阶段会画用例图。
- 类图:关注模型的抽象,模型的属性和对象以及模型之间的关系。
- 时序图:关注有哪些协作对象,以及随着时间的推送系统在做什么。不需要关注异常情况以及逆向的时序。
- 状态图:关注状态,以及状态的触发条件,切换条件。在设计阶段会画。
- 活动图:关注有多少个系统参与了协作,以及每个流程的瞬间是怎么判断的。
2. 应用分层
1. 分层的优点:
- 分工效率高
- 系统的可拓展性高
- 系统的可维护性高
计算机领域的复杂问题可以通过分层来解决
2. 通常的分层结构
- 顶层:终端显示层以及开放的API访问层
- 第二层:请求处理层,就是说的web层
- 第三层:逻辑层,分为业务逻辑层和通用逻辑层
- 第四层:数据持久层,也就是DAO层
- 第五层:数据库
如下图所示:
3. 分层的异常处理
- DAO层:异常类型很多,不需要打印日志
- Manager/Service层:必须记录出错日志到磁盘,尽可能带上参数信息,保护案发现场
- Web层:绝不能往上抛异常,应跳转到友好页面,给出友好的错误提示信息
- 开放接口层:要将异常处理成错误码和错误信息返回
4. 分层领域模型
- DO(Date Object):此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象
- DTO(Data Transfer Object): 数据传输对象,Service 或Manager 向外传输的对象
- BO(Business Object):业务对象,可以由 Service 层输出的封装业务逻辑的对象
- Query:数据查询对象,各层接收上层的查询请求。注意超过2个参数的查询封装,禁止使用 Map类来传输
- VO(View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象
3.Maven 管理项目
maven是目前主流和项目构建工具,还有一个是Gradle但是Gradle主要是针对于安卓进行项目构建的。
4. 主要功能
- 依赖管理
- 规范目录结构
- 完整的项目构建阶段
- 支持多种插件
5. 二方库引入规约
- 线上应用不要依赖 SNAPSHOT 版本
- 正式发布的类库必须去中央仓库查证,使 RELEASE 版本号有延续性,
- 正式发布的类库版本号不允许覆盖升级。
- 二方库的新增或升级,保持除功能点之外的其它 jar 包仲裁结果不变。
- 二方库里定义的枚举类型,参数中可以使用返回值不允许使用
- 依赖于一个二方库群时,必须定义一个统一的版本变量,避免版本号不一致。
- 禁止在依赖中出现相同的 GroupId,相同的 ArtifactId,但是不同的 Versio
6. 二方库引入建议
- 底层基础技术框架、核心数据管理平台、或近硬件端系统谨慎引入第三方实现。
- 所有版本仲裁使用 语句块
- 二方库不要有配置项
- 不要使用不稳定的工具包或者 Utils