zoukankan      html  css  js  c++  java
  • 阿里java开发手册中命名规约解读之DO/BO/DTO/VO/AO

    前言


    在阅读《阿里巴巴Java开发手册》时,看到命名规则中有这样一条

    虽然知道这些是根据Java对象的角色所分配名称的后缀,但是没有弄清楚分别是什么意思,日常开发中也没有使用到。

    网上查找了一些资料,但是感觉大多数都是一样的,可能大家都是互相copy,篇幅过长并且不易理解。

    别灰心!《阿里巴巴Java开发手册》中对于上面这些在领域模型的命名使用上给出了规范,说的很清楚,分享给大家。

    补充一个链接,内容是《阿里巴巴Java开发手册纪念版》以及历时一年推出的代码规范插件。https://github.com/alibaba/p3c

    领域模型命名规约


    1.数据对象:xxxDO,xxx即为数据表名

    2.数据传输对象:xxxDTO,xxx为业务领域相关的名称;

    3.展示对象:xxxVO,xxx一般为网页的名称;

    4.POJO 是DO/DTO/BO/VO的统称禁止命名成xxxPOJO。

    个人解读


    1.如果你写的web应用是一个CRUD的demo,那么一个DO就完全够用。

    例如,写一个用户的增删改查,数据库中有一个user表,你建立一个UserDO,类中的字段和数据库中一致,当你需要对User操作时,就用UserDO进行数据存取。

    那么问题来啦:

    首先,例如user表中有一个叫做passWord的字段,保存了登录密码,这个字段肯定是不需要返回到页面上的,但是如果像上面的操作,直接把UserDO的对象返回给前台,必然会带来安全隐患;

    其次,如果User中有些字段需要转换后才能正确显示(例如显示中文,保存的是英文,或者保存的是关联表中的id),直接返回UserDO就只能在页面上用js写if...else...来区分值,很繁琐;

    最后,如果你的页面上显示的数据是一个很大的结果集(调用了好几个接口的返回结果),例如除了User信息还有Account信息,一个UserDO显然就不够用了;

    VO的概念应运而生。

    2.VO中我们写的字段都是前台所需要的,而不是对象的所有字段值;

    VO中的字段格式都是符合前台页面显示所需的,需要中文就显示中文;

    对于调用了好几个接口返回的结果集,可以封装一个VO,将所有结果整合后再返回给前端页面。

    3.有些人肯定在想,我的DO和VO中字段大多数都是相同的,有必要再写这样一个类吗?

    答案是有的!如果写的是比较小的web应用,字段不多,你觉得没有这个必要。但是如果写的是大一些的系统,字段越多,分层的优势就会越明显。(博主写的web不大,但是拿出一个类也是一百多个字段,深感头疼)

    DO和VO之间的转换


    1.两个POJO之间的属性值进行copy,最原始的方法就是手动复制,但是这样就会产生大量的set,get代码,业务逻辑才是重点好吗?!不能喧宾夺主;

    2.还有种方法就是用Spring提供的BeanUtils,博主现在的项目中用的就是这个,感觉还可以,但是也有点小问题,例如copy日期需要先注册等;

    3.使用Dozer。Dozer是一个对象转换工具,可以在两个JavaBean之间进行递归数据复制,并且这些JavaBean可以是不同的复杂的类型。有兴趣的同学可以去学习下。

    欢迎讨论,共同学习! 码字排版不易,转载请在文章明显处注明出处并附原文链接!
  • 相关阅读:
    C标准中的一些预定义宏
    将智能设备连接到开发计算机上
    ATX电源短接哪两个引脚可以开机
    Visual C++ 编译器选项
    Visual C++ 链接器选项
    vs 2005 中的单元测试的生命周期
    .net study link
    C#的多线程机制探索(http://diy8.blog.sohu.com/741499.html)
    ![网页设计与编程] (小心眼花!)(http://www.fwcn.com/Bbs/viewthread.php?tid=10521)
    多个线程可能会试图同时访问某个对象。在多个线程同时争相访问某个对象的同时,如果一个线程修改了资源,有些线程可能会收到无效状态。例如,如果某个线程读取对象的字段,同时另一线程正在修改该字段,则第一个线程可能会收到无效的字段状态。这种情况称为竞用情况。
  • 原文地址:https://www.cnblogs.com/optblogs/p/8398813.html
Copyright © 2011-2022 走看看