java - 业务DTO的抽象
高洛峰
高洛峰 2017-04-17 13:29:00
[Java讨论组]

怎么去抽象业务数据传输对象?

场景:订单系统

订单有自己的一套实体,OrderDO里面有orderIdorderPrice......
订单还和另外一个系统有关联,当生成一个订单的时候,同时也需要生成和对应系统的关系(一个orderId对应一条记录)RelativeDO,并且存储相应的data数据。

需求

现在需要提供一个接口,接口接受一个OrderId,订单系统返回给他一个数据结构。数据结构中需要有订单的信息和关系的一些信息(比如存储的data数据)
按照需求抽象出一个DTO用来承载数据,但是这个时候把订单的一些信息和存储的信息放在一个实体里面总觉得怪怪的。因为这几个字段根本没有关联呀。

    public class DTO{
        private long orderId;
        private long price;
        private int amount;

        //关联信息
        private String data;
        private String relativeId;
    }

本来想通过组合的方式来将OrderDORelativeDO用组合的方式生成一个DTO并提供相应的接口。但是因为OrderDO自身的一些原因(OrderDO里面的数据结构很乱,这样做的话,每次取数据都需要对OrderDO进行深层次的遍历才能取到值,这样子没获取一个订单数据都要遍历一遍,效率很低)不能这么做。

但是跳出来想一下,这个DTO本来就是用来承载数据的一个抽象,所以就算里面有这些不相关的属性也没有关系。

该怎么解释这种现象,或者怎么去抽象这个场景下的DTO?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
怪我咯

扁平化起来就行了,不用组合两个,纯粹的DTO,不需要考虑关联不关联的

PHPz

1.可以组合的,然后在DTO里面提供一个方法,做的事情就是简化你说的取值麻烦的问题,这样上层调用还是很简单的,不用关心遍历的逻辑。
2.性能我想没啥大的影响吧,一个orderDO能有多深的层次啊

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号