大彬大约 2 分钟

最近知识星球open in new window有小伙伴提出了关于性格测试的疑问:

球友提问

大彬大佬,请教一个概念和具体应用上的问题, VO, BO, PO, DO, DTO 这些概念和具体应用是怎样的?


大彬的回答

你好,这个问题要结合实际业务来讲更好理解。

比如现在有一个用户登录的业务。 有一张表user存用户数据,这个表里面有 id ,name ,password。首先说说PO,PO比较好理解,就是数据库中的记录,一个PO的数据结构对应着表的结构,表中的一条记录就是一个PO对象。

再来看看什么是DO。比如现在需要实现登录功能,那就只需要检查用户输入的 name 和 password 和数据库是否一致就可以了。 这种情况下,就用一个 User 对象来表示这个领域模型就可以了。我一般用 Domain Object ,也就是 DO 表示,对应下来就是 UserDO ( 统一用 Do 也可以)

再假设现在有一个展示用户信息的业务,假想给一个客服(不期望把用户密码给他看到的那种情况)

一般来说有两种做法:

第一种,你可以在序列化为 json 字符串的时候,隐藏 password 的序列化来实现;

第二种,你可以新建一个 VO ( View Object )对象,就叫 UserVO ,然后这里面就只有 id 和 name 两个属性即可;

再假设,现在的场景不是直接展示到页面上,而是被一个业务系统调用,这个系统需要依赖登录的服务。 然后需要提供 sdk 给这个业务系统集成,那么这个时候就可以声明一个 DTO 对象,里面也只有 id 和 name 属性即可。

当然实际业务肯定不可能说只有 id ,name ,password 这么简单,这里只是举个例子方便理解。

Loading...