如何用循环简化57款定制产品报价的重复校验逻辑?
简化多产品报价校验逻辑的方案
实现步骤:
统一管理CA实例
把所有CA1到CA57的实例按顺序存入列表,方便后续循环操作:// 初始化时创建列表,按1到57的顺序添加CA实例 List<CA> caInstances = Arrays.asList(CA1, CA2, CA3, ..., CA57);定位触发按钮对应的行
遍历列表,找到触发当前事件的按钮所属的CA实例,确定需要校验的最大行索引:int targetLineIndex = -1; for (int i = 0; i < caInstances.size(); i++) { CA currentCA = caInstances.get(i); if (e.getSource() == currentCA.BTNgeneratequoteCA1) { targetLineIndex = i; break; } } if (targetLineIndex == -1) { return; // 非目标按钮触发,直接退出 }逐行校验合规性
从第1行(列表索引0)开始,到触发按钮对应的行(索引targetLineIndex),逐个校验generateCA1是否为true:boolean allProductsValid = true; for (int i = 0; i <= targetLineIndex; i++) { if (!caInstances.get(i).generateCA1) { allProductsValid = false; break; // 只要有一个产品不合规,立即终止校验 } }执行报价生成逻辑
校验通过后,执行原有的报价生成代码:if (allProductsValid) { try { FillAllKIS(); E2fill(); FillQuote(); } catch (IOException y) { Logger.severe(y.getMessage()); } RecordAllLines(); }
替换效果
将原来57段重复的if判断逻辑,替换成上述4段代码即可。后续如果需要调整产品数量(比如增减行数),只需修改caInstances列表的元素,无需修改校验逻辑,极大提升代码可维护性。
内容的提问来源于stack exchange,提问作者Gareth
相关产品推荐
相关产品推荐

