为了防止大量的if...else...或switch case代码的出现,可以使用策略模式+工厂模式进行优化。 在我的项目当中,报表繁多,所以尝试了这种方式进行优化报表的架构。代码很简单,如下:Factory工厂类@Service public class ReportFactory { /** * 初始化的时候将所有的ReportService自动加载到Map中 */ @Autowired private final MapreportIns = new ConcurrentHashMap<>(); public ReportService getReportIns(String code) { ReportService reportInstance = reportIns.get(code); if (reportInstance == null) { throw new RuntimeException("未定义reportInstance"); } return reportInstance; } } 复制代码接口public interface ReportService { String getResult(); } 复制代码实现类@Component(value = "A1") public class ReportServiceA1 implements ReportService { @Override public String getResult() { return "我是A1"; } } 复制代码@Component(value = "A2") public class ReportServiceA2 implements ReportService { @Override public String getResult() { return "我是A2"; } } 复制代码测试@SpringBootTest public class BlogServerApplicationTest { @Autowired ReportFactory reportFactory; @Test public void test2() { String result1 = reportFactory.getReportIns("A1").getResult(); System.out.println("-----------------"); System.out.println(result1); String result2 = reportFactory.getReportIns("A2").getResult(); System.out.println("-----------------"); System.out.println(result2); } } 复制代码 打印如下:----------------- 我是A1 ----------------- 我是A2 复制代码总结 在平时的工作当中,写一些业务代码是无可避免的,但是只要不局限于现状,往往可以发现不一样的乐趣。就像我在报表的业务中学习到了策略模式+工厂模式。