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

更多QQ空间微信QQ好友腾讯朋友复制链接
您的位置:首頁/技術(shù)文章
文章詳情頁

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

【字号: 作者:豬豬瀏覽:102日期:2023-12-05 16:47:01

問題描述

@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有沒有改進(jìn)空間,我知道使用eumn來枚舉,沒寫以減少無關(guān)代碼

問題解答

回答1:

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

//方法參數(shù)盡量少于3個(gè),3個(gè)以上時(shí)建議使用組合對象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)建對象調(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); }}

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

回答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;

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

回答3:

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

回答4:

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

回答5:

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

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 美女视频一区二区三区在线 | 2022国内精品免费福利视频 | 91免费公开视频 | 国产日本三级欧美三级妇三级四 | 欧美视频在线观看 | 国产天堂在线一区二区三区 | 在线视频免费观看a毛片 | 中国a级淫片免费播放 | av毛片免费看 | 91热国内精品永久免费观看 | 日本成人免费在线观看 | 亚洲欧洲小视频 | 国产成人久久久精品毛片 | 欧美做爰野外在线视频观看 | 99re思思 | 亚洲精品在线网站 | 免费人成在线 | 亚洲成a人片在线观 | 经典三级久久 | 国产精品青草久久福利不卡 | 免费在线观看a级片 | 美女张开腿让男人桶的 视频 | 国产成人啪精品视频免费网 | 亚洲欧美另类在线视频 | 欧美日韩精品一区二区视频在线观看 | 欧美成人ass | 操美女大逼视频 | 免费人成在线观看网站视频 | 韩国本免费一级毛片免费 | 最新国产午夜精品视频成人 | 国产精品久久免费 | 国产成人一区免费观看 | 久香草视频在线观看免费 | 色偷偷成人网免费视频男人的天堂 | 亚洲精品字幕一区二区三区 | 久草在线资源视频 | 波多野吉衣 免费一区 | 国产精品久久久久久久久久免费 | 美国一级毛片免费看 | 全高清特级毛片 | 国产激情视频在线 |