4.工程结构规约

285 阅读3分钟

4. 工程结构规约

1. 前提回顾

类图、用例图、时序图、状态图和活动图

  • 用例图:关注用户角色和用户行为。在需求分析阶段会画用例图。
  • 类图:关注模型的抽象,模型的属性和对象以及模型之间的关系。
  • 时序图:关注有哪些协作对象,以及随着时间的推送系统在做什么。不需要关注异常情况以及逆向的时序。
  • 状态图:关注状态,以及状态的触发条件,切换条件。在设计阶段会画。
  • 活动图:关注有多少个系统参与了协作,以及每个流程的瞬间是怎么判断的。

2. 应用分层

1. 分层的优点:

  • 分工效率高
  • 系统的可拓展性高
  • 系统的可维护性高

计算机领域的复杂问题可以通过分层来解决

2. 通常的分层结构

  1. 顶层:终端显示层以及开放的API访问层
  2. 第二层:请求处理层,就是说的web层
  3. 第三层:逻辑层,分为业务逻辑层和通用逻辑层
  4. 第四层:数据持久层,也就是DAO层
  5. 第五层:数据库

如下图所示:

图片.png

3. 分层的异常处理

  1. DAO层:异常类型很多,不需要打印日志
  2. Manager/Service层:必须记录出错日志到磁盘,尽可能带上参数信息,保护案发现场
  3. Web层:绝不能往上抛异常,应跳转到友好页面,给出友好的错误提示信息
  4. 开放接口层:要将异常处理成错误码和错误信息返回

4. 分层领域模型

  1. DO(Date Object):此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象
  2. DTO(Data Transfer Object): 数据传输对象,Service 或Manager 向外传输的对象
  3. BO(Business Object):业务对象,可以由 Service 层输出的封装业务逻辑的对象
  4. Query:数据查询对象,各层接收上层的查询请求。注意超过2个参数的查询封装,禁止使用 Map类来传输
  5. VO(View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象

3.Maven 管理项目

maven是目前主流和项目构建工具,还有一个是Gradle但是Gradle主要是针对于安卓进行项目构建的。

4. 主要功能

  • 依赖管理
  • 规范目录结构
  • 完整的项目构建阶段
  • 支持多种插件

5. 二方库引入规约

  1. 线上应用不要依赖 SNAPSHOT 版本
  2. 正式发布的类库必须去中央仓库查证,使 RELEASE 版本号有延续性,
  3. 正式发布的类库版本号不允许覆盖升级。
  4. 二方库的新增或升级,保持除功能点之外的其它 jar 包仲裁结果不变。
  5. 二方库里定义的枚举类型,参数中可以使用返回值不允许使用
  6. 依赖于一个二方库群时,必须定义一个统一的版本变量,避免版本号不一致。
  7. 禁止在依赖中出现相同的 GroupId,相同的 ArtifactId,但是不同的 Versio

6. 二方库引入建议

  1. 底层基础技术框架、核心数据管理平台、或近硬件端系统谨慎引入第三方实现。
  2. 所有版本仲裁使用 语句块
  3. 二方库不要有配置项
  4. 不要使用不稳定的工具包或者 Utils