Jared's blog Jared's blog
首页
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • Java
  • 数据库SQL
  • 设计模式
  • 集成开发环境
  • Linux系统
  • 代码管理
  • 项目管理
  • 后端

    • 中间件
    • Spring家族
    • 服务器软件
    • 数据库
    • 搜索引擎
    • 分布式&微服务
    • 容器化
  • 前端

    • 基础
    • 模板框架
    • 组件化框架
  • 运维知识
  • 部署工具
架构与模型
  • 在线教育
  • 电商
  • 疑惑日志
  • 随笔
  • 友链
  • 书籍
  • 娱乐
  • Github (opens new window)
  • Gitee (opens new window)
  • CSDN (opens new window)

Jared H

💻🤣😜
首页
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • Java
  • 数据库SQL
  • 设计模式
  • 集成开发环境
  • Linux系统
  • 代码管理
  • 项目管理
  • 后端

    • 中间件
    • Spring家族
    • 服务器软件
    • 数据库
    • 搜索引擎
    • 分布式&微服务
    • 容器化
  • 前端

    • 基础
    • 模板框架
    • 组件化框架
  • 运维知识
  • 部署工具
架构与模型
  • 在线教育
  • 电商
  • 疑惑日志
  • 随笔
  • 友链
  • 书籍
  • 娱乐
  • Github (opens new window)
  • Gitee (opens new window)
  • CSDN (opens new window)
  • 编程模型
    • 对象定义
  • DDD领域模型

编程模型

# 编程模型

# 对象定义

参考https://zhuanlan.zhihu.com/p/264675395

我们先从数据的流转角度来看看各个对象的定义

img

类型 解释 注释
VO(Value Object)值对象

VO就是展示用的数据,不管展示方式是网页,还是客户端,还是APP,只要是这个东西是让人看到的,这就叫VO VO主要的存在形式就是js里面的对象(也可以简单理解成json) 注:在展示业务不复杂的系统,可直接使用DTO
DTO(Data Transfer Object)数据传输对象 DTO有两种存在形式:
①在后端,他的存在形式是请求的入参,也就是在controller里面定义的参数
②在前端,他的存在形式通常是js里面的对象(也可以简单理解成json),也就是通过ajax请求的那个数据体
注:这个传输通常指的前后端之间的传输,DTO本身的一个隐含的意义是要能够完整的表达一个业务模块的输出。
如果服务和服务之间相对独立,那就可以叫DTO;如果服务和服务之间不独立,每个都不是一个完整的业务模块,拆开可能仅仅是因为计算复杂度或者性能的问题,那这就不能够叫做DTO,只能是BO。
PO(Persistant Object)持久对象 简单说PO就是数据库中的记录,一个PO的数据结构对应着库中表的结构,表中的一条记录就是一个PO对象通常PO里面除了get,set之外没有别的方法。对于PO来说,数量是相对固定的,一定不会超过数据库表的数量,等同于常说的Entity
BO(Business Object)业务对象 BO是一个业务对象,一类业务就会对应一个BO,数量上没有限制。而且BO会有很多业务操作,也就是说除了PO对象的get,set方法以外,BO会有很多针对自身数据进行计算的方法。
现在很多持久层框架自身就提供了数据组合的功能,因此BO有可能是在业务层由业务来拼装PO而成,也有可能是在数据库访问层由框架直接生成。
很多情况下为了追求查询的效率,框架跳过PO直接生成BO的情况非常普遍,PO只是用来增删改使用。
注:一个简单的例子就是PO1是交易记录,PO2是登录记录,PO3是商品浏览记录,PO4是添加购物车记录,
PO5是搜索记录,BO是个人网站行为对象
一些工具类的系统和一些业务不是很复杂的系统DTO是可以和BO合并成一个,当业务扩展的时候注意拆分就行
DO 现在主要有两个版本 →→→ ①阿里巴巴的开发手册中的定义,DO( Data Object)这个等同于上面的PO
②DDD(Domain-Driven Design)领域驱动设计中,DO(Domain Object)这个等同于上面的BO
上次更新: 2022/04/01, 15:14:40
DDD领域模型

DDD领域模型→

Theme by Vdoing Copyright © 2020-2022 Jared H
粤ICP备20046800号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×