@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;
}
Struktur kod sangat serupa, kecuali lapisan dao mengambil data secara berbeza Selain itu, adakah ruang untuk penambahbaikan dalam suis ini, saya tahu bahawa eumn digunakan untuk menghitung, tetapi saya tidak menulisnya untuk mengurangkan kod yang tidak berkaitan.
Kod anda adalah untuk mencipta kelas Option, yang sesuai untuk pemfaktoran semula menggunakan kaedah kilang.
Saya tidak akan menerangkan secara terperinci tentang faedah menggunakan kaedah kilang Anda boleh membaca blog saya untuk butiran
Cukup keluarkan baris ini dan panggil mereka dalam kaedah
Anda boleh mencuba corak reka bentuk templat, yang mengekstrak algoritma biasa ke dalam kelas induk dan meninggalkan bahagian yang berbeza kepada subkelas untuk menulis semula. Jika terdapat lebih sedikit tempat sedemikian, lebih mudah untuk mengekstrak kaedah awam.
Apa yang dinyatakan di atas boleh dilaksanakan, ekstrak bahagian awam dan masukkan ke dalam kaedah awam.
Kaedah perahan awam yang dinyatakan di atas adalah mudah dan praktikal, tetapi jawapan di tingkat satu terlalu mendalam dan perlu difikirkan dengan teliti