国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java - 代碼重復(fù)求改進(jìn)方法

瀏覽:141日期:2023-12-05 16:47:01

問(wèn)題描述

@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; }

代碼結(jié)構(gòu)非常相似,只是dao層取數(shù)據(jù)不一樣,另外這個(gè)switch有沒(méi)有改進(jìn)空間,我知道使用eumn來(lái)枚舉,沒(méi)寫(xiě)以減少無(wú)關(guān)代碼

問(wèn)題解答

回答1:

你的代碼是要?jiǎng)?chuàng)建Option類(lèi),適合使用工廠方法重構(gòu)。

//方法參數(shù)盡量少于3個(gè),3個(gè)以上時(shí)建議使用組合對(duì)象class OptionParam { private String type; private ReportType reportType; private Integer piceId; private Integer direction; //getter and setter}//Option抽象工廠,每個(gè)具體工廠都必須繼承自抽象工廠public abstract class AbstractOptionFactory { @Autowired ChartDao chartDao; //希望具體工廠實(shí)現(xiàn)的方法,交于具體工廠實(shí)現(xiàn) abstract List<ChartData> getData(OptionParam optionParam); abstract String getSubtitle(OptionParam optionParam); //公共邏輯代碼,創(chuàng)建對(duì)象調(diào)用該方法 public Option create(OptionParam optionParam) {assert optionParam != null;assert optionParam.getReportType() != null;String type = optionParam.getType();List<ChartData> data = getData(optionParam);String title = Titlehelper.getChartTitle(optionParam.getReportType());String subtitle = getSubtitle(optionParam);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; }}@Componentclass TrafficChartOptionFactory extends AbstractOptionFactory { @Override List<ChartData> getData(OptionParam optionParam) {return chartDao.getTrafficChartData(optionParam.getReportType(),optionParam.getpiceId(),optionParam.getDirection()); } @Override String getSubtitle(OptionParam optionParam) {return Titlehelper.gettrafficSubText(optionParam.getReportType().getReportTime(),optionParam.getpiceId(),optionParam.getDirection()); }}@Componentclass AmmeterChartOptionFactory extends AbstractOptionFactory { @Override List<ChartData> getData(OptionParam optionParam) {return chartDao.getAmmeterDataChartData(optionParam.getReportType(), optionParam.getpiceId()); } @Override String getSubtitle(OptionParam optionParam) {return Titlehelper.gettrafficSubText(optionParam.getReportType().getReportTime(),optionParam.getpiceId(),1); }}

使用工廠方法的好處就不多說(shuō)了,具體可以閱讀我的博客

回答2:

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;

這幾行提取出來(lái)放在一個(gè)方法里調(diào)用不就行了

回答3:

可以試試模板設(shè)計(jì)模式吧,將通用的算法提取到父類(lèi)中,不同的地方交給子類(lèi)重寫(xiě)。如果這樣的地方少些,還是提取一個(gè)公共方法,比較省事。

回答4:

樓上說(shuō)的可行,提取公共部分封裝成一個(gè)公共方法。

回答5:

樓上說(shuō)的提取公共方法簡(jiǎn)單實(shí)用,一樓的答案太高深,需要好好琢磨一下

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 91av小视频| 99视频在线看观免费 | 成人国产精品高清在线观看 | 国内精品久久久久久中文字幕 | 亚洲国产日韩欧美综合久久 | 国产精品黄在线观看免费 | 精品国产v无码大片在线观看 | 成人亚洲欧美日韩在线 | 99在线视频免费 | 日本久久综合 | 黄色一级a毛片 | 日韩欧美在线播放视频 | 国产一区二区在线观看视频 | 欧美三区 | 国产成人v视频在线观看 | 性欧美高清极品xx | 亚洲一区二区精品推荐 | 怡红院日本一道日本久久 | 国产欧美另类久久久品 | 真正全免费视频a毛片 | 韩国精品视频在线观看 | 亚洲人欧洲日韩 | 成年女人看片免费视频播放器 | 久久精品8 | 欧美 另类 精品一区视频 | 国产精品2020观看久久 | 国产一区在线免费观看 | 欧美一级v片 | 国产成a人片在线观看视频 国产成版人视频网站免费下 | 草草影院ccyy免费看片 | a级毛片在线免费看 | 日韩欧美成人乱码一在线 | 中文字幕亚洲精品日韩精品 | 婷婷丁香花麻豆 | 网红主播大尺度精品福利视频 | 亚洲免费网站观看视频 | 亚洲综合成人网在线观看 | 91无毒不卡 | 经典国产一级毛片 | 国产区在线免费观看 | 日韩欧美一区二区三区免费看 |