@Override
public Option getTrafficChartOption(String type, ReportType reportType, Integer deviceId, Integer direction) {
Integer device = deviceId + 1010000;
List<ChartData> data = chartDao.getTrafficChartData(reportType,device,direction);
String title = Titlehelper.getChartTitle(reportType);
String subtitle = Titlehelper.gettrafficSubText(reportType.getReportTime(),deviceId,direction);
Option option = new Option();
switch (type){
case "bar":
option = BarOption.BarOptionBuiler(title, subtitle, data);
break;
case "line":
option = LineOption.OptionBuilerhelp(title, subtitle, data);
break;
case "pie":
option = PieOption.PieOptionbuilder(title, subtitle, data);
break;
}
return option;
}
@Override
public Option getAmmeterChartOption(String type, ReportType reportType, Integer deviceId) {
List<ChartData> data = chartDao.getAmmeterDataChartData(reportType,deviceId);
String title = Titlehelper.getChartTitle(reportType);
String subtitle = Titlehelper.gettrafficSubText(reportType.getReportTime(),deviceId,1);
Option option = new Option();
switch (type){
case "bar":
option = BarOption.BarOptionBuiler(title, subtitle, data);
break;
case "line":
option = LineOption.OptionBuilerhelp(title, subtitle, data);
break;
case "pie":
option = PieOption.PieOptionbuilder(title, subtitle, data);
break;
}
return option;
}
Die Codestruktur ist sehr ähnlich, außer dass die Dao-Schicht Daten anders abruft. Gibt es außerdem Raum für Verbesserungen bei diesem Schalter? Ich weiß, dass eumn zum Aufzählen verwendet wird, aber ich habe es nicht geschrieben, um irrelevanten Code zu reduzieren
你的代码是要创建Option类,适合使用工厂方法重构。
使用工厂方法的好处就不多说了,具体可以阅读我的博客
这几行提取出来放在一个方法里调用不就行了
可以试试模板设计模式吧,将通用的算法提取到父类中,不同的地方交给子类重写。如果这样的地方少些,还是提取一个公共方法,比较省事。
楼上说的可行,提取公共部分封装成一个公共方法。
楼上说的提取公共方法简单实用,一楼的答案太高深,需要好好琢磨一下