You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何解决多个方法中的代码重复问题?

解决方案

方案1:直接提取公共方法(实现成本最低,适合短期场景)

如果当前只有这2个导出方法,且确定后续不会新增同类导出逻辑、公共代码改动频率极低,直接把重复代码块分别提取为独立私有方法即可:

  • 把repeated lines-I提取为private void preExport(),放公共前置处理逻辑
  • 把repeated lines-II提取为private MultipartFile postExport(),放公共后置处理逻辑
    改造后两个方法只需要调用上述公共方法,插入自身独有逻辑即可,能快速消除重复代码。

方案2:模板方法模式(更推荐,扩展性更好)

如果后续可能新增exportC/exportD等同类导出逻辑,或者公共逻辑存在调整可能,更适合用模板方法模式固定导出流程骨架,把可变的自定义逻辑作为参数传入。配合Java 8的函数式接口可以做到非常轻量的实现,不需要额外创建抽象类继承:
通用模板方法示例:

private MultipartFile exportTemplate(Consumer<Void> customLogic) throws IOException {
    // repeated lines-I 公共前置逻辑
    
    // 执行传入的自定义逻辑
    customLogic.accept(null);
    
    // repeated lines-II 公共后置逻辑
    // 返回最终生成的MultipartFile
}

原有方法改造后:

@Override
public MultipartFile exportA() throws IOException {
    return exportTemplate(v -> {
        // 仅属于exportA方法的其他逻辑
    });
}

@Override
public MultipartFile exportB() throws IOException {
    return exportTemplate(v -> {
        // 仅属于exportB方法的其他逻辑
    });
}

这种实现的优势:

  • 完全消除重复代码,公共逻辑仅需维护一份,调整时不会出现漏改问题
  • 新增导出方法时仅需传入对应自定义逻辑即可,符合开闭原则
  • 实现足够轻量,不需要额外增加类层次结构

内容的提问来源于stack exchange,提问作者Jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:57:04