请问这段Java代码能不能封装成一个方法

问题描述

这段代码在我的项目中经常会被使用到,想要把它封装成一个方法以达到减少代码量的目的,但由于本人是个菜鸟没能做到,希望有心的大神提供下思路。在此先行拜谢了。
目的:想将hardwareServices和Hardware这两个类变成形参

问题出现的环境背景及自己尝试过哪些方法

Java版本:1.8
尝试用泛型,但是由于要调用类的方法,以报错告终

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
private HardwareServices hardwareServices;
List<Hardware> hardwareList = hardwareServices.selectList(wrapper);

        if(hardwareList.size() > 0){
            for (Hardware i: hardwareList) {
                if(i.getName().equals(hardware.getName())){
                    if(i.getIsDelete() == 1){
                        wrapper.eq("is_delete", 1).eq("id", i.getId());
                        hardware.setIsDelete(0);
                        hardware.setChangeMan(selectUser.getName());
                        hardware.setUpdateTime(nowData);
                        hardwareServices.update(hardware, wrapper);
                        result.setValue(hardware);
                    }else{
                        result.setMsg("已有同名五金");
                        result.setCode(-1);
                    }
                    return result;
                }
            }
        }
        

下面是另一个地方的代码:
EntityWrapper<ProductProcess> wrapper = new EntityWrapper<ProductProcess>();
List<ProductProcess> hardwareList=productProcessServices.selectList(wrapper);

        if(hardwareList.size() > 0){
            for (ProductProcess i: hardwareList) {
                if(i.getName().equals(productProcess.getName())){
                    if(i.getIsDelete() == 1){
                        wrapper.eq("is_delete", 1).eq("id", i.getId());
                        productProcess.setIsDelete(0);
                        productProcess.setChangeMan(selectUser.getName());
                        productProcess.setUpdateTime(nowData);
                        productProcessServices.update(productProcess, wrapper);
                        result.setValue(productProcess);
                    }else{
                        result.setMsg("已有工序");
                        result.setCode(-1);
                    }
                    return result;
                }
            }
        }

阅读 1.5k
1 个回答

在问题评论里问到了我想要的条件及信息,有以下建议供题主参考

结论:不建议封装到一起,理由如下

  1. 代码封装或者说是抽象出相同的方法和工具类,这种操作其实个人认为是建立在以下两种情况的

    要么与业务无关的相同处理,比如写一个取集合最后一个元素的工具类这种,或者加密工具等等
    要么与业务强相关,A业务和B业务在业务上是有关系的,类似他们可以抽象出一个抽象的业务C,这个业务C的相关处理就是A和B都可以使用的公共处理了,比如集合AbstractCollection这个抽象类,它就抽象了一些集合公共的处理方法其他的集合子类都可以使用
  2. 从提供信息来看,HardwareProductProcess两个业务之间没有半毛钱关系...只是...只是...恰好他们有些相同的字段,恰好他们在题主贴出来的代码里处理大致相同,强行封装在一起可能会造成业务上的强耦合,这样的结果就是,以后某个业务比如Hardware在处理时稍作变化时,需要修改封装在一起的代码时,那就痛苦了...你要么在公共代码里做特殊处理?那这个公共方法就不叫公共方法,那就只有单独写方法处理...但是那个公共方法就只有ProductProcess调用了...
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题