我正在开发Spring Boot应用程序。 它具有基于输入参数获取的api,某些api的这些参数数量众多,导致在代码库中出现了很多if / else,if / else嵌套的情况。 有人可以提出防止这种情况的建议吗,或者在Java中存在一些设计模式来专门避免这种情况。
代码看起来像这样-
if (waybillData.getEtimName() != null) {
etimName = waybillData.getEtimName();
}
if (waybillData.getVehicleNo() != null) {
busno = waybillData.getVehicleNo();
}
if (waybillData.getIssuedTickets() != null) {
issuedTickets = waybillData.getIssuedTickets().toString();
}
if (waybillData.getIssuedRolls() != null) {
issuedRolls = waybillData.getIssuedRolls().toString();
}
if (waybillData.getWaybillStatus() != null) {
status = waybillData.getWaybillStatus();
}
if (waybillData.getFuel() != null) {
fuel = waybillData.getFuel().toString();
}
另一个例子-
if (userInfo.getagencyId() != null && userInfo.getDepotId() != null) {
if (!search.isEmpty()) {
if (fromdate != null) {
if (status.isPresent()) {
allwaybillCollection = wayBillRepository.findWaybillOnDateAndStatusSearchAgencyAndDepotPageable(
fromDate,toDate,status.get(),search,userInfo.getagencyId(),userInfo.getDepotId(),page);
} else {
allwaybillCollection = wayBillRepository.findWaybillOnDateAndStatusSearchAgencyAndDepotPageable(
fromDate,page);
}
} else {
if (status.isPresent()) {
allwaybillCollection = wayBillRepository.findWaybillOnDateAndStatusSearchAgencyAndDepotPageable(
status.get(),page);
} else {
allwaybillCollection = wayBillRepository.findWaybillOnDateAndStatusSearchAgencyAndDepotPageable(
search,page);
}
}
} else {
if (fromdate != null) {
if (status.isPresent()) {
allwaybillCollection = wayBillRepository.findWaybillOnDateAndStatusAgencyAndDepotPageable(
fromDate,page);
} else {
allwaybillCollection = wayBillRepository.findWaybillOnDateAndStatusAgencyAndDepotPageable(
fromDate,page);
}
} else {
if (status.isPresent()) {
allwaybillCollection = wayBillRepository.findWaybillOnDateAndStatusAgencyAndDepotPageable(
status.get(),page);
} else {
allwaybillCollection = wayBillRepository.findWaybillOnDateAndStatusAgencyAndDepotPageable(
userInfo.getagencyId(),page);
}
}
}
} else if (userInfo.getagencyId() != null) {
if (!search.isEmpty()) {
if (fromdate != null) {
if (status.isPresent()) {
allwaybillCollection = wayBillRepository.findWaybillOnDateAndStatusSearchAgencyPageable(
fromDate,page);
} else {
allwaybillCollection = wayBillRepository.findWaybillOnDateAndStatusSearchAgencyPageable(
fromDate,page);
}
} else {
if (status.isPresent()) {
allwaybillCollection = wayBillRepository.findWaybillOnDateAndStatusSearchAgencyPageable(
status.get(),page);
} else {
allwaybillCollection = wayBillRepository.findWaybillOnDateAndStatusSearchAgencyPageable(search,page);
}
}
} else {
if (fromdate != null) {
if (status.isPresent()) {
allwaybillCollection = wayBillRepository.findWaybillOnDateAndStatusAgencyPageable(fromDate,page);
} else {
allwaybillCollection = wayBillRepository.findWaybillOnDateAndStatusAgencyPageable(fromDate,page);
}
} else {
if (status.isPresent()) {
allwaybillCollection = wayBillRepository.findWaybillOnDateAndStatusAgencyPageable(status.get(),page);
} else {
allwaybillCollection = wayBillRepository
.findWaybillOnDateAndStatusAgencyPageable(userInfo.getagencyId(),page);
}
}
}