Для предотвращения большого количества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
Суммировать
В повседневной работе неизбежно написание некоторого бизнес-кода, но пока он не ограничивается статус-кво, вы часто можете найти разные развлечения. Так же, как я изучил шаблон стратегии + шаблон фабрики в отчетном бизнесе.