@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;
}
La structure du code est très similaire, sauf que la couche dao récupère les données différemment. De plus, y a-t-il place à l'amélioration dans ce commutateur. Je sais qu'eumn est utilisé pour énumérer, mais je ne l'ai pas écrit pour réduire le code non pertinent
.
Votre code consiste à créer la classe Option, qui convient à la refactorisation à l'aide de méthodes d'usine.
Je n'entrerai pas dans les détails sur les avantages de l'utilisation des méthodes d'usine. Vous pouvez lire mon blog pour plus de détails
.Extrayez simplement ces lignes et appelez-les dans une méthode
Vous pouvez essayer le modèle de conception de modèle, qui extrait les algorithmes communs dans la classe parent et laisse différentes parties à la sous-classe pour la réécriture. S'il y a moins de tels endroits, il est plus facile d'extraire une méthode publique.
Ce qui a été dit ci-dessus est réalisable, extrayez la partie publique et encapsulez-la dans une méthode publique.
La méthode d'extraction publique mentionnée ci-dessus est simple et pratique, mais la réponse au premier étage est trop profonde et doit être réfléchie attentivement