领域模型中的实体类分为四种模型:VO、DTO、DO、PO,各种实体类用于不同业务层次间的交互,并会在层次内实现实体类之间的转化。
VO (View Object)视图对象
用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来,一般由后端传输给前端。VO代表展示层需要显示的数据。
DTO(Data Transfer Object)数据传输对象
用于展示层和逻辑层之间的数据传输。
DTO(Data Transfer Object)是一个用于在分布式系统中传输数据的对象。它通常用于数据从数据源到目标位置的传输,例如从服务器到客户端,或者从客户端到服务器。DTO代表服务层需要接收的数据和返回的数据。
在本文中泛指用于展示层与服务层之间的数据传输对象
DO(Domain Object)领域对象
从现实世界中抽离出来的有形或无形的业务实体。
PO(Persistent Object):持久化对象
它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段就对应PO的一个属性。
应用时序
- 用户发出请求,需要传给后端接口的数据在展示层被匹配为VO。
- 展示层把VO转换为服务层对应方法所要求的DTO,传送给服务层。
- 服务层首先根据DTO的数据构造(或重建)一个DO,调用DO的业务方法完
- 服务层把DO转换为持久层对应的PO(可以使用ORM工具,也可以不用),调用持久层的持久化方法,把PO传递给它,完成持久化操作。
举例
以一个填写表单的操作为例:
- 用户填写表单,表单的数据在展示层被匹配为VO
- 展示层把VO转换为服务层要求的DTO,传给服务层
- 服务层首先根据DTO构建一个DO,调用DO的业务方法完成具体业务
- 服务层将DO转换为PO,传递给持久层,由持久层完成持久化操作