第一次重构

一个新项目
订单有八个状态,已编制,已派发,已接单,已停单,已出库,已上车,已卸货,已完结
要求我根据每个状态的查询都写一个接口,并且返回的订单信息要过滤,而不是需要什么在set到返回对象中。
这需要我写一个订单基本信息的类orderInfo,然后根据订单流程,不断继承与orderInfo或者orderInfo的子类,除了已停单的类不写以外,总共有8个类;每次继承的时候根据状态新增几个需要的变量,然后在查询的时候讲order对象copy到指定的orderInfo中,以完成筛选。

例如
public class OrderDispatchedInfo extends OrderCompiledInfo {
    private String driverId;

    private String goodsName;

    private String goodsWeight;

    private String driverName;

    private String driverTelephone;
但是到之后根据业务需要,我需要关联货物和司机表获得一些参数返回到前端。

这里写图片描述

//对象拷贝
BeanUtils.copyProperties(ctmsOrder, orderInfo);
//参数包装begin
.....
.....
...
//参数包装end
在参数包装这包括try catch 大概有20多行代码,我要写根据7个状态的列表查询,这就大概多了140行代码,而且鬼知道之后还会不会需要别的信息。不过

等项目开发阶段基本完成的时候,我就想起了重构这段代码。一开始我只是简单的将以上代码抽离出来写了一个私有方法。但是测试的时候发现在查询已完成的订单时很多信息没有。
private Object getOrderInfo(CtmsOrder ctmsOrder, OrderDispatchedInfo orderInfo) {
        BeanUtils.copyProperties(ctmsOrder, orderInfo);
        // 车辆要求信息
        ....
        // 货物信息

>

        ....
        // 车主信息
        ....
        return orderInfo;
    }
这时候才发现,我在拷贝对象的时候,目标对象因为是继承级别为已派发的参数,很多字段例如评价信息是拷贝不到目标对象的。

之后决定这个抽离出来的类只将其他表信息包装,对象拷贝在原方法完成,不过是在包装参数之后的动作
OrderReceivedInfo orderInfo = new OrderReceivedInfo();
//参数包装
orderInfo = (OrderReceivedInfo) getOrderInfo(ctmsOrder, orderInfo);
BeanUtils.copyProperties(ctmsOrder, orderInfo);
orderInfoList.add(orderInfo);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值