问题描述
这段代码在我的项目中经常会被使用到,想要把它封装成一个方法以达到减少代码量的目的,但由于本人是个菜鸟没能做到,希望有心的大神提供下思路。在此先行拜谢了。
目的:想将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;
}
}
}
在问题评论里问到了我想要的条件及信息,有以下建议供题主参考
结论:不建议封装到一起,理由如下
代码封装或者说是抽象出相同的方法和工具类,这种操作其实个人认为是建立在以下两种情况的
Hardware
和ProductProcess
两个业务之间没有半毛钱关系...只是...只是...恰好他们有些相同的字段,恰好他们在题主贴出来的代码里处理大致相同,强行封装在一起可能会造成业务上的强耦合,这样的结果就是,以后某个业务比如Hardware
在处理时稍作变化时,需要修改封装在一起的代码时,那就痛苦了...你要么在公共代码里做特殊处理?那这个公共方法就不叫公共方法,那就只有单独写方法处理...但是那个公共方法就只有ProductProcess
调用了...