JAVA中的各种Object
首先引用一下阿里开发手册中的定义.
- DO( Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。
- DTO( Data Transfer Object):数据传输对象,Service或Manager向外传输的对象。
- BO( Business Object):业务对象。 由Service层输出的封装业务逻辑的对象。
- AO( Application Object):应用对象。 在Web层与Service层之间抽象的复用对象模型,极为贴近展示层,复用度不高。
- VO( View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象。
- POJO( Plain Ordinary Java Object):在本手册中, POJO专指只有setter/getter/toString的简单类,包括DO/DTO/BO/VO等。
用法用量请各位看官老爷酌情食用. POJO, 不解释. 所有的这些Object里面. 原则上都不允许有业务代码.
DO
DO是绝对不允许添加任何非 set/get 以外的代码的(包括修改set get). 可以有自定义的toString
DTO
通常用于系统间传输, 必需能够序列化, 可能需要考虑异构语言系统的兼容问题.
BO
业务系统内部使用, 用于复杂逻辑数据处理, 跨业务数据传递 , 原始数据二次加工等 . 注意, 原文可能有问题. 此对象应该为封装业务逻辑的数据对象.
AO
业务和架构过度复杂的产物, 很实用, 但不常见.
VO
常用于对前端的api接口响应中. 是可以暴露给最终用户的数据.
一些需要注意的点
DO 和 DTO 会参与dao, rmi, json, xml 等 需要序列化操作. 额外代码 可能会导致 序列化失败, 严重的可能导致一些系统关键对象的销毁.
DO 和 BO 通常会包含大量不能对外暴露的属性数据.
DTO 和 AO 与VO 数据格式可能不一致. 即使一致通常也需要加工后转成VO才可以发送给最终用户.(这句话可能有争议, 但一般指没有严格代码要求的地方)
VO 和 DTO 可以对外部返回. 可以用于接收外部系统数据, 通常认为每个字段所接收的数据.都是具有风险的. 至少需要常规判空.严格安全环境需要安全检查.
AO BO 通常为单个子项目内部使用. DO 只存在于数据层.
文章标题:JAVA中的各种Object
本文作者:zhu8fei
发布时间:2020-04-21, 10:57:36
最后更新:2024-08-12, 10:01:48
原始链接:http://www.zhu8fei.com/2020/04/21/various-object.html版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zhu8fei@163.com