请问这段代码可以怎样优化呢 有太多重复代码 但是修改的类不一样

keekeren 2018-06-05 09:23:00
if (merchantType == 0) {
//个人证书申请入库
EleCertificateApply eleCertificateApply = addPersonApply(mchVerified);
applyResult = personApply(mchVerified);
// 商户ID标识
String accountId = applyResult.getAccountId();
if (StringUtils.isNotBlank(accountId)) {
eleCertificateApply.setAccountId(accountId);
eleCertificateApply.setStatus(Enums.certificateApplyStatus.APPLY_SUCC.val());
eleCertificateApply.save();
result.put("status", true);
result.put("accountId", accountId);
result.put("merchantType", merchantType);
} else {
result.put("status", false);
result.put("message", applyResult.getMsg());
}
} else {
//企业证书申请入库
EleOrganCertificateApply organCertificateApply = addOrganApply(mchVerified, form);
applyResult = organApply(mchVerified, form);
String accountId = applyResult.getAccountId();
if (StringUtils.isNotBlank(accountId)) {
organCertificateApply.setAccountId(accountId);
organCertificateApply.setStatus(Enums.certificateApplyStatus.APPLY_SUCC.val());
organCertificateApply.save();
result.put("status", true);
result.put("accountId", accountId);
} else {
result.put("status", false);
result.put("message", applyResult.getMsg());
}
}
...全文
967 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
T certificateApply = addCommonApply addCommonApply这个方法可以写成接口里面的方法,cls只是传证书类类型过来,不用可以不传,传个接口类型的变量过来
keekeren 2018-06-05
  • 打赏
  • 举报
回复
引用 1 楼 u010970951 的回复:
public void <T extends Certificate> enter(Class<T> cls, String form){ T certificateApply = addCommonApply//生成方法需要你自己修改,修改成根据第二个参数有无来判断 applyResult = commonApply(mchVerified, form);//这一步需要你自己修改下方法,同样的是修改成根据第二个参数有无来判断 // 商户ID标识 String accountId = applyResult.getAccountId(); if (StringUtils.isNotBlank(accountId)) { certificateApply.setAccountId(accountId); certificateApply.setStatus(Enums.certificateApplyStatus.APPLY_SUCC.val()); certificateApply.save(); result.put("status", true); result.put("accountId", accountId); result.put("merchantType", merchantType);//根据类型去判断 } else { result.put("status", false); result.put("message", applyResult.getMsg()); } 大体可以这样修改,具体咋样需要你自己调一下,这样写将证书的类型作为Class传进来,写一个接口,然后所有的证书实现这个接口,这样以后就可以传入实现了这个接口的类当参数了
没看到cls作什么用啊
  • 打赏
  • 举报
回复
public void <T extends Certificate> enter(Class<T> cls, String form){ T certificateApply = addCommonApply//生成方法需要你自己修改,修改成根据第二个参数有无来判断 applyResult = commonApply(mchVerified, form);//这一步需要你自己修改下方法,同样的是修改成根据第二个参数有无来判断 // 商户ID标识 String accountId = applyResult.getAccountId(); if (StringUtils.isNotBlank(accountId)) { certificateApply.setAccountId(accountId); certificateApply.setStatus(Enums.certificateApplyStatus.APPLY_SUCC.val()); certificateApply.save(); result.put("status", true); result.put("accountId", accountId); result.put("merchantType", merchantType);//根据类型去判断 } else { result.put("status", false); result.put("message", applyResult.getMsg()); } 大体可以这样修改,具体咋样需要你自己调一下,这样写将证书的类型作为Class传进来,写一个接口,然后所有的证书实现这个接口,这样以后就可以传入实现了这个接口的类当参数了
maradona1984 2018-06-05
  • 打赏
  • 举报
回复
简单就抽取方法 复杂点就把企业和个人相同逻辑抽象出来,可以考虑使用 策略模式

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧