开发者社区 问答 正文

新人提问:DO/DTO/BO/VO使用规范

DO/DTO/BO/VO使用规则是什么?比如有个Entiry实体和EntiryDto、EntityVo、EntityBo,接收前端传参用哪个?业务之间互相调用用哪个?数据存储用哪个?给前端返回用哪个?

展开
收起
三月笑忘书 2021-12-24 10:42:26 1412 分享 版权
阿里云 AI 助理回答

在软件开发中,DO(Domain Object)、DTO(Data Transfer Object)、BO(Business Object)、VO(View Object)是用于不同层之间数据传输和处理的模型对象,它们各有其使用场景和目的:

  1. DO (Domain Object):

    • 用途: 通常对应数据库中的实体表结构,用于数据持久化层,直接映射到数据库表。
    • 场景: 数据存储时使用。例如,当需要将数据保存到数据库时,会使用Entity实体(即DO)。
  2. DTO (Data Transfer Object):

    • 用途: 用于层间数据传输,可以包含多个DO或额外信息,用于精简或丰富数据以适应特定接口需求。
    • 场景:
      • 接收前端传参: 当从前端接收数据时,使用EntityDto来封装这些数据,它可以根据需要调整字段,不一定与数据库表结构完全一致。
      • 业务之间互相调用: 在服务间通信时,DTO用于封装需要传递的数据,减少不必要的数据传输,提高效率。
  3. BO (Business Object):

    • 用途: 包含业务逻辑处理的对象,可能包含多个DTO或DO,用于实现复杂的业务规则。
    • 场景: 业务逻辑处理时使用。在服务内部处理业务逻辑时,如进行数据转换、权限校验等操作,会使用EntityBo来封装业务相关的数据和行为。
  4. VO (View Object):

    • 用途: 用于展示层,根据视图需求定制数据格式,可能包含计算后的属性,专为界面展示设计。
    • 场景: 给前端返回时使用。在向前端返回数据时,使用EntityVo来格式化数据,确保只暴露给前端所需的数据,并可进行必要的数据处理或格式化,如日期格式转换、状态码转换等。

总结来说,数据从客户端到服务器再到数据库,以及反向过程,使用的对象依次可能是:VO -> BO/DTO -> DO(存储)-> DTO -> BO -> VO。这样分层的设计有助于保持代码的清晰度、可维护性和扩展性。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: