日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

Java如何利用策略模式替代if/else語句

瀏覽:29日期:2022-08-23 16:23:01

平時在開發(fā)中避免不了使用大量的if else語句,但過多層的if else對于性能有很大的開銷,類似如下代碼

public class MainStart { public static void main(String[] args) { String msgid = 'MS066'; if(message.equals('MS066')){ System.out.println('MS066'); }else if (message.equals('MS034')){ System.out.println('MS034'); }else if (message.equals('MS064')){ System.out.println('MS064'); }else{ System.out.println('no msgid!'); } }}

上邊代碼只是示例,實際情況可能不止4層

策略模式是一種解耦的方法,它對算法進(jìn)行封裝,使得算法的調(diào)用和算法本身分離。使用策略模式客戶端代碼不需要調(diào)整,算法之間可以互相替換,因為不同的算法實現(xiàn)的是同一個接口。將上面的代碼優(yōu)化后變?yōu)椋?/p>

public class MainStart { public static void main(String[] args) { OrderDictController controller=new OrderDictController(); String msgid = 'MS066'; MsgInterface msgInterface=MsgContext.getInstance(msgId); msgInterface.manage(msg,controller); }}

實現(xiàn)策略模式需要以下幾個步驟:

1.定義接口

import java.sql.SQLException;import org.dom4j.DocumentException;import com.huc.controller.OrderDictController;public interface MsgInterface { public void manage(String msg, OrderDictController controller) throws DocumentException, SQLException;}

2.實現(xiàn)接口,重寫處理邏輯

package com.huc.msg.imp;import java.sql.SQLException;import org.dom4j.DocumentException;import com.huc.controller.OrderDictController;import com.huc.msg.MsgInterface;public class MS003 implements MsgInterface{ @Override public void manage(String msg, OrderDictController controller) throws DocumentException, SQLException { controller.manageMs003(msg); }}

package com.huc.msg.imp;import java.sql.SQLException;import org.dom4j.DocumentException;import com.huc.controller.OrderDictController;import com.huc.msg.MsgInterface;public class MS028 implements MsgInterface{ @Override public void manage(String msg, OrderDictController controller) throws DocumentException, SQLException { controller.manageMs028(msg); }}

寫兩個作為例子,可根據(jù)情況自行擴(kuò)展實現(xiàn)類

3.定義策略上下文,根據(jù)msgid獲取對象實例

package com.huc.msg;import java.util.Map;public class MsgContext { public static MsgInterface getInstance(String msgId){ MsgInterface inter=null; Map<String, String> allClazz = MsgEnum.getAllClazz(); String clazz = allClazz.get(msgId); if (msgId!=null&&msgId.trim().length()>0) { try {try { inter = (MsgInterface) Class.forName(clazz).newInstance();//調(diào)用無參構(gòu)造器創(chuàng)建實例} catch (InstantiationException e) { e.printStackTrace();} catch (IllegalAccessException e) { e.printStackTrace();} } catch (ClassNotFoundException e) {e.printStackTrace(); } } return inter; }}

在這一步驟中,我們需要一種方式可以根據(jù)msgid來反射獲取對象的實例,這里使用枚舉來維護(hù)二者的對應(yīng)關(guān)系。

package com.huc.msg;import java.util.HashMap;import java.util.Map;public enum MsgEnum { MS066('MS066', 'com.huc.msg.imp.MS066'), MS034('MS034', 'com.huc.msg.imp.MS034'), MS064('MS064', 'com.huc.msg.imp.MS064'), MS028('MS028', 'com.huc.msg.imp.MS028'), MS003('MS003', 'com.huc.msg.imp.MS003'), MS062('MS062', 'com.huc.msg.imp.MS062'), MS154('MS154', 'com.huc.msg.imp.MS154'), MS153('MS153', 'com.huc.msg.imp.MS153'), MS033('MS033', 'com.huc.msg.imp.MS033'); private String msgid; private String clazz; public static Map<String, String> getAllClazz() { Map<String, String> map = new HashMap<String, String>(); for (MsgEnum msgEnum : MsgEnum.values()) { map.put(msgEnum.getMsgid(), msgEnum.getClazz()); } return map; } MsgEnum(String msgid, String clazz) { this.msgid = msgid; this.clazz = clazz; } public String getMsgid() { return msgid; } public void setMsgid(String msgid) { this.msgid = msgid; } public String getClazz() { return clazz; } public void setClazz(String clazz) { this.clazz = clazz; }}

在上面的代碼中,getAllClazz()方法用于獲取所有message和對應(yīng)處理類的映射關(guān)系。至此策略模式優(yōu)化就已經(jīng)完成了,運行MainStart可以看到運行結(jié)果。

以上就是Java如何利用策略模式替代if/else語句的詳細(xì)內(nèi)容,更多關(guān)于Java 策略模式的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
91精品福利观看| 黄毛片在线观看| 婷婷成人基地| 国内精品福利| 久久久久国产一区二区| 日本在线高清| 久久久精品日韩| 尤物精品在线| 蜜臀av性久久久久蜜臀aⅴ四虎| 视频在线观看一区| 亚洲精品裸体| 国产伦精品一区二区三区千人斩| 国产精品mm| 精品久久视频| 日韩免费一区| 亚洲国产一区二区三区在线播放| 韩日一区二区三区| 亚洲视频二区| 国产精品成人一区二区网站软件| 国产精品香蕉| 色欧美自拍视频| 999国产精品999久久久久久| 91精品福利| 亚洲精品少妇| 蜜桃精品视频| 在线日韩av| 亚洲区欧美区| 国产精品乱战久久久| 精品成人18| 欧美~级网站不卡| 亚洲日产av中文字幕| 久久国内精品视频| a日韩av网址| 丝袜a∨在线一区二区三区不卡| 日韩精品导航| 久久香蕉网站| 999久久久精品国产| 国产亚洲福利| 欧美日韩在线精品一区二区三区激情综合 | 99国内精品| 欧美中文一区| 美女福利一区二区三区| 模特精品在线| 久久av网址| 久久精品免费一区二区三区| 中文无码久久精品| 国产成人免费精品| 亚洲激情五月| 国产精品久久久久久妇女| 999国产精品| 国产亚洲电影| 黄色成人在线网址| 国产精品白浆| 黄色成人精品网站| 久久av资源| 欧美在线亚洲综合一区| 国产欧美自拍| 影音国产精品| 精品国产亚洲一区二区三区在线| 欧美丝袜一区| 国产美女视频一区二区| 香蕉精品久久| 国产精品99久久免费观看| 欧美高清一区| 精品国产黄a∨片高清在线| 视频在线在亚洲| 日韩国产一区二区三区| 日韩av电影一区| 欧美~级网站不卡| 激情中国色综合| 日韩国产一二三区| 欧美精品一区二区三区精品| 久久精品一区二区国产| 久久成人一区| 日本а中文在线天堂| 国产亚洲精品美女久久久久久久久久| 91精品1区| 国产精品蜜芽在线观看| 日本成人中文字幕| 亚洲激情二区| 国产综合色区在线观看| 日韩精品免费视频人成| 在线观看免费一区二区| 日韩欧美在线中字| 久久av综合| 亚洲精品免费观看| 午夜国产欧美理论在线播放| 精品99久久| 国产日韩欧美一区二区三区 | 青青伊人久久| 欧美精品九九| 亚洲精品一级二级| 麻豆免费精品视频| 欧美日本不卡| 深夜日韩欧美| 免费精品视频在线| 亚洲福利免费| 国产精品久久久久久久免费观看| 国产丝袜一区| 日韩精品视频网站| 一区二区亚洲视频| 六月婷婷一区| 亚洲欧美日韩综合国产aⅴ| 欧美天堂视频| 色婷婷综合网| 精品国产欧美日韩| 国产精品欧美一区二区三区不卡| 日日夜夜免费精品视频| 亚洲精选久久| 亚洲精品中文字幕乱码| 国产伊人精品| 欧美 日韩 国产一区二区在线视频| 精品国产午夜肉伦伦影院| 国产精品久久久久久久久久白浆 | 精品国产一区二区三区噜噜噜| 日本在线不卡视频一二三区| 久久99伊人| 天堂成人国产精品一区| 亚洲一区二区三区高清不卡| 日韩av首页| 91精品一区二区三区综合在线爱| 久久国产日本精品| 亚洲成av人片一区二区密柚| 综合日韩av| 日韩欧美综合| 99热国内精品| 91精品电影| 亚洲一区二区三区免费在线观看| 美女国产一区| 亚洲男人在线| 国产九九精品| 久久三级中文| 国产夫妻在线| 久久影院一区| 婷婷精品视频| 午夜在线一区| 日韩欧美久久| 国产精品久久久久77777丨| 久久99久久久精品欧美| 精品视频国内| 成人羞羞视频播放网站| 亚洲视频综合| 亚洲欧美久久| 日本va欧美va精品| 精品亚洲成人| 日本精品影院| 亚洲免费在线| 欧美视频久久| 亚洲黄色免费看| 久久精品欧美一区| 天堂成人国产精品一区| 国产日韩一区| 日本蜜桃在线观看视频| 在线观看免费一区二区| 午夜性色一区二区三区免费视频| 国产一卡不卡| 在线看片福利| 不卡一区2区| 日韩1区2区日韩1区2区| 国产aⅴ精品一区二区四区| 99精品网站| 亚洲精品精选| 高清久久一区| 亚洲欧美日本国产专区一区| 青草国产精品| 日韩在线高清| 亚洲91网站| 久久青青视频| 亚洲三级国产| 97se综合| 日韩精品免费一区二区夜夜嗨| 国精品产品一区| 激情欧美一区| 国产亚洲电影| 亚洲午夜黄色| 欧美精品中文| 亚洲福利精品| 国产日韩一区二区三区在线| 久久要要av| 日本aⅴ亚洲精品中文乱码| 9999国产精品| 日韩精品久久理论片| 日韩欧美精品综合| 91精品美女| 国内精品福利| 久久av免费| 丝袜国产日韩另类美女| 高清一区二区| 天堂va在线高清一区| 成人福利av| 日本99精品| 国内激情久久| 另类综合日韩欧美亚洲| 国产色综合网| 精品国产三区在线| 男女性色大片免费观看一区二区| 精品久久中文| 日韩免费精品| 好吊视频一区二区三区四区| 美女毛片一区二区三区四区最新中文字幕亚洲 |