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

您的位置:首頁技術文章
文章詳情頁

SpringBoot策略模式的實踐使用

瀏覽:65日期:2023-03-18 16:50:27
前言

在實際業務代碼中,我們經常會碰到這樣的代碼:

String type = actualService.getRealtype(uid);if(type.equals('typeA')){ // do func A}else if(type.equals('typeB')){ // do func B}else if(type.equals('typeC')){ // do func C}else[ //...}

這種 if-else 或者 switch-case 代碼在每個分支都會判斷分支類型,然后執行不同的方法獲取結果,當代碼分支比較少并且確定不會增加時,使用這種方式也是完全 ok 的,但是當分支比較多,并且后面可能會增加分支判斷條件時,這種方式就違反了單一職責和開閉原則,因此對于我們開發工作中遇到這種情況,首先想到的是應該去優化這種代碼中的“壞味道”,其中的方法之一就是考慮能不能用策略模式去重寫,將代碼和業務邏輯解耦,這樣才有利于后續的維護工作。

策略模式,簡單來說就是通過實現接口來重寫不同的方法,從而通過上下文自動獲取選擇的策略方法并執行。

SpringBoot策略模式的實踐使用

實踐使用

以下基于 SpringBoot 的依賴注入實現策略模式。假設場景如下:某個客戶需要訂購多個資源,每個資源在不同資源池中,不同資源池下的資源也都不一樣,在此處把原始的 if-else 代碼邏輯優化為策略模式。

首先我們實現一個 ResourceStrategy 接口,并定義選擇資源的抽象方法:

public interface ResourceStrategy { String orderInformation(String id);}

然后根據 if-else 中的判斷條件,構造三個資源類實現 ResourceStrategy 接口:

@Component('A')public class ResourceA implements ResourceStrategy { @override public String orderInformation(String id){ System.out.println('策略選擇:Strategy A'); return 'A'; }}

@Component('B')public class ResourceB implements ResourceStrategy { @override public String orderInformation(String id){ System.out.println('策略選擇:Strategy B'); return 'B'; }}

@Component('C')public class ResourceC implements ResourceStrategy { @override public String orderInformation(String id){ System.out.println('策略選擇:Strategy C'); return 'C'; }}

注意其中每個類都需要標注策略類別名稱。

然后我們需要寫一個 SimpleContext 類來存儲我們的策略類別,這時候就用到了 Spring 的依賴注入和自動發現。

@Servicepublic class SimpleContextService { @Autowired private final Map<String, Strategy> strategyMap = new ConcurrentHashMap<>(); public SimpleContext(Map<String, ResourceStrategy > strategyMap) {this.strategyMap.clear();strategyMap.forEach(strategyMap::put); } public String getResource(String poolId){return strategyMap.get(poolId).orderInformation(poolId); }}

接下來就是我們的實際調用場景了~,如下:

@RestController@RequestMapping('/test')public class TestController { @Autowired private SimpleContextService contextService; @GetMapping('/choose') public String choose(@RequestParam String poolId){return simpleContext.getResource(poolId); } }

那么當我們的入參 poolId 傳入 “A” 時,返回的結果如下:

策略選擇:Strategy AA

同理,不同傳參都會進入不同的策略執行方法。過這個簡單的 demo,就可以看到通過獲取輸入不同的資源池 id,可以自動的拿到不同的資源。通過實踐總結下來,使用策略模式的好處就是通過一個封裝的上下文可以自由的切換不同的算法,省去多重判斷,同時可以具有很好的擴展性。

總結

從上面可以看出,策略模式的優缺點十分明顯,在我們實際的業務中,也需要看情況使用。

優點: 策略模式符合開閉原則 代碼簡潔,從上下文自動獲取條件轉移語句 使用策略模式可以提高算法的保密性和安全性 缺點: 每個策略都需要單獨實現一個類,當策略很多時,會產生大量的策略類,會使代碼出現“膨脹” 客戶端必須知道所有的策略 策略模式的一系列算法地位是平等的,是可以相互替換的,事實上構成了一個扁平的算法結構,也就是在一個策略接口下,有多個平等的策略算法,就相當于兄弟算法。而且在運行時刻只有一個算法被使用,這就限制了算法使用的層級,使用的時候不能被嵌套使用

以上就是SpringBoot策略模式的實踐使用的詳細內容,更多關于SpringBoot策略模式的使用的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美在线观看天堂一区二区三区| 日韩二区三区在线观看| 激情综合网五月| 久久影院一区二区三区| 中文无码久久精品| 欧美日中文字幕| 正在播放日韩精品| 韩国三级一区| 麻豆视频观看网址久久| 亚洲精品自拍| 久久国产精品成人免费观看的软件| 久久av导航| 国产欧美日韩免费观看| 蜜臀av一区二区在线免费观看| 色综合www| 国产精品一区亚洲| 中文字幕一区二区av| 91精品韩国| 黄色aa久久| 色综合五月天| 国产精品一区二区av交换| 中文无码久久精品| 亚洲欧美伊人| 日韩电影免费网址| 日韩精品免费视频人成| 色狠狠一区二区三区| 丝袜美腿亚洲一区| 免费在线观看成人| 日本 国产 欧美色综合| 蜜臀久久99精品久久久久宅男 | 国产精品视频一区二区三区综合 | 夜夜嗨av一区二区三区网站四季av| 欧美日韩视频网站| 国产伦久视频在线观看| 风间由美中文字幕在线看视频国产欧美| 欧美日韩调教| 久久99青青| 国产伦久视频在线观看| 日韩精品不卡一区二区| 亚洲黄色网址| 一区二区小说| 99在线观看免费视频精品观看| 噜噜噜躁狠狠躁狠狠精品视频| 日韩影院精彩在线| 亚洲制服少妇| 亚洲一区二区三区中文字幕在线观看 | 国产中文欧美日韩在线| 久久99精品久久久久久园产越南| 麻豆视频一区二区| 日韩av二区| 99视频精品全国免费| 在线综合亚洲| 免播放器亚洲| 日韩成人在线看| 18国产精品| 另类激情亚洲| 久久久精品久久久久久96| 美女久久久久| 日韩一区网站| 国产日韩免费| 国产精品任我爽爆在线播放| 久久精品国产99国产| 国产高潮在线| 国产亚洲毛片| 日本不卡在线视频| 日韩激情一区二区| 国产调教精品| 久久久精品久久久久久96 | 欧美日本三区| 国产精品成人3p一区二区三区| 国产精品99久久久久久董美香| 国产精品蜜芽在线观看| 日韩亚洲国产欧美| 亚洲五月综合| 日韩精品中文字幕吗一区二区| 精品一区电影| 99在线精品免费视频九九视| 久久国产免费看| 欧美国产美女| 欧美日韩国产综合网| 青青草精品视频| 亚洲综合电影| 日本麻豆一区二区三区视频| 国产精品高清一区二区| 国产一区二区视频在线看| 精品午夜av| 久久亚洲视频| 精品一二三区| 日韩精品一级中文字幕精品视频免费观看 | 日韩专区视频网站| 国产欧美一区二区三区米奇 | 麻豆一区二区三区| 婷婷综合在线| 国产精品www.| 久久精品国产www456c0m| 日本欧美韩国一区三区| 99精品电影| 国产精品久久久免费| 美女少妇全过程你懂的久久| 国产视频一区二| 欧美国产极品| 日韩专区一卡二卡| 天堂av在线| 日韩一区二区三区免费视频| 超碰在线99| 免费观看在线综合色| 国产精品xxxav免费视频| 在线精品小视频| 嫩呦国产一区二区三区av| 亚洲黄色免费看| 日本不卡中文字幕| 日韩免费一区| 日韩一区二区三区精品视频第3页| 婷婷成人在线| 国产精品久久久久久久久久齐齐 | 亚洲免费激情| 久久99偷拍| 亚洲欧美一区在线| 日韩1区2区日韩1区2区| 久久精品国产亚洲夜色av网站| 国产日韩一区二区三免费高清| 婷婷六月综合| 麻豆精品久久久| 在线综合欧美| 欧美不卡视频| 久久国际精品| 日韩一区精品视频| 久久久成人网| 国产精品久久久久9999高清| 国产女优一区| 91麻豆国产自产在线观看亚洲| 亚洲久久在线| 99在线观看免费视频精品观看| 蜜桃av.网站在线观看| 精品亚洲成人| 国产午夜久久av| 视频在线在亚洲| 欧美日韩一区二区三区视频播放| 97精品97| 国产精品毛片久久| 亚洲资源网站| 国内揄拍国内精品久久| 黄色日韩在线| 国产一区2区在线观看| 免费在线亚洲欧美| 国产精品66| 欧美久久亚洲| 日韩精品1区2区3区| 亚洲精选av| 最新亚洲一区| av成人国产| 久久亚洲一区| 日韩影院在线观看| 亚洲一区二区三区免费在线观看| 国产欧美一区二区三区精品酒店| 国产精品欧美三级在线观看| 国产一区 二区| 国产欧美激情| 欧美偷窥清纯综合图区| 日本天堂一区| 欧美日韩亚洲三区| 日韩中文字幕| 亚洲精品美女| 亚洲精品无播放器在线播放| 亚洲午夜91| 亚洲一区二区三区高清| 另类av一区二区| 亚洲我射av| 在线日韩成人| 九一精品国产| 国产极品嫩模在线观看91精品| 国产精品久久久久久久久久齐齐| 欧美精品91| 日韩欧美不卡| 成人免费电影网址| 成人精品中文字幕| 激情视频一区二区三区| 夜久久久久久| 91大神在线观看线路一区| 国产精品啊v在线| 国产精品久久久久9999高清| 国产a亚洲精品| 日韩精品一区二区三区免费观看| 久久精品亚洲欧美日韩精品中文字幕| 欧美日韩国产在线观看网站 | 激情自拍一区| av亚洲在线观看| 日韩欧美另类中文字幕| 美女性感视频久久| 日韩精品一卡| 欧美综合二区| 亚洲精选av| 国产精品夜夜夜| 亚洲欧美日本日韩| 日本91福利区| 国产精品蜜月aⅴ在线| 最近高清中文在线字幕在线观看1| 日韩深夜视频| 麻豆久久精品| 国产精品高清一区二区|