色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

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

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

瀏覽:136日期: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ù)不一樣,另外這個switch有沒有改進(jìn)空間,我知道使用eumn來枚舉,沒寫以減少無關(guān)代碼

問題解答

回答1:

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

//方法參數(shù)盡量少于3個,3個以上時建議使用組合對象class OptionParam { private String type; private ReportType reportType; private Integer piceId; private Integer direction; //getter and setter}//Option抽象工廠,每個具體工廠都必須繼承自抽象工廠public abstract class AbstractOptionFactory { @Autowired ChartDao chartDao; //希望具體工廠實現(xiàn)的方法,交于具體工廠實現(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;

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

回答3:

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

回答4:

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

回答5:

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

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 亚洲在线第一页 | 9l国产精品久久久久麻豆 | 91精品福利手机国产在线 | 全免费a级毛片免费看 | 欧美无极品 | 久久se精品一区精品二区 | 久久夜色精品国产噜噜亚洲a | 亚洲综合爱久久影院 | 亚洲特一级毛片 | 日韩精品免费视频 | 免费成人高清视频 | 性欧美美国级毛片 | 男人的天堂视频在线 | 综合欧美日韩一区二区三区 | 神马午夜不卡 | 日本久久久久久久 | 欧美2区 | 美女视频黄.免费网址 | 成人毛片免费在线观看 | 成人黄网18免费观看的网站 | 久久精品免看国产 | 久久99精品视免费看 | 国产美女视频网站 | 亚洲欧美成人影院 | 亚洲 中文 欧美 日韩 在线人 | 国产福利一区二区三区 | 日韩午夜三级 | a级欧美片免费观看 | 女人张开双腿让男人桶完整 | 日本一级高清不卡视频在线 | 国产一区二区三区成人久久片 | 九九成人 | 成人毛片国产a | 欧美精品xxx| 国产日产韩产麻豆1区 | 亚洲午夜在线 | 国产精品aⅴ | 可以免费看黄的网址 | 欧美成人性色大片在线观看 | 国产精品视频自拍 | 一本久久综合 |