SpringBoot использует шаблон стратегии + заводской шаблон

Spring Boot

Для предотвращения большого количестваif...else...илиswitch caseВнешний вид кода можно оптимизировать с помощью паттерна стратегия + фабричный паттерн.
В моем проекте много отчетов, поэтому я попытался таким образом оптимизировать структуру отчета. Код очень прост, а именно:

Завод заводской класс

@Service
public class ReportFactory {

    /**
     * 初始化的时候将所有的ReportService自动加载到Map中
     */
    @Autowired
    private final Map<String, ReportService> reportIns = 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

Суммировать

В повседневной работе неизбежно написание некоторого бизнес-кода, но пока он не ограничивается статус-кво, вы часто можете найти разные развлечения. Так же, как я изучил шаблон стратегии + шаблон фабрики в отчетном бизнесе.