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

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

Java8特性使用Function代替分支語句

瀏覽:24日期:2022-08-25 10:50:16

傳統(tǒng)的多分支方式(圈復(fù)雜度為6):

public String order(String type) { if ('1'.equals(type)) { return '1'; } else if ('2'.equals(type)) { return '2'; } else if ('3'.equals(type)) { return '3'; } else if ('4'.equals(type)) { return '4'; } else if ('5'.equals(type)) { return '5'; } else { return 'none'; }}

使用Function函數(shù)式編程的新方式:

private Map<String, Function<String, String>> map = new HashMap<>();public String order2(String type){ init(); Function<String, String> fun = map.get(type); String result = fun.apply(type); return result;}public void init() { map.put('1', a -> { System.out.println('執(zhí)行1分支'); return a + '1'; }); map.put('2', a -> { System.out.println('執(zhí)行2分支'); return a + '22'; }); map.put('3', a -> { System.out.println('執(zhí)行3分支'); return a + '333'; }); map.put('4', a -> { System.out.println('執(zhí)行4分支'); return a + '4444'; }); map.put('5', a -> { System.out.println('執(zhí)行5分支'); return a + '55555'; });}

圈復(fù)雜度為0;

總結(jié):

1.Function是一個接口,它完整的樣子是這樣: Function<T,R>,其中T表示接受一個T類型的入?yún)?R表示返回一個R類型的出參,注意: 既然入?yún)⒑统鰠⒍际且粋€泛型,那就說明可以適用于任何種類的方法,如果方法需要多個入?yún)?可以把它們封裝成T類型的入?yún)O, 如果出參也需要有多個參數(shù),也可以把它們封裝為一個R類型的出參VO.

2. apply方法是function函數(shù)的統(tǒng)一執(zhí)行標(biāo)志性方法,它接受第一條提到的T t,返回第一條提到的R r,不管function函數(shù)體有多復(fù)雜,統(tǒng)統(tǒng)按apply執(zhí)行,就像所有的線程統(tǒng)統(tǒng)用start開始執(zhí)行.

3. 以前在有很多if-else的場合時,也想過把決定分支的入?yún)?用type表示)和所執(zhí)行的代碼建立映射關(guān)系,但那時候因為不懂Function,心里想Map里面只能裝數(shù)據(jù)類型,像分支邏輯這種不是數(shù)據(jù)類型,沒法裝.如今學(xué)習(xí)了Function,發(fā)現(xiàn)它把代碼邏輯也封裝得了,正好滿足了我的設(shè)想.真的太好用了.

4. 以前用if-else執(zhí)行多分支時, 走入不同分支還需要一個個對照,現(xiàn)在用了函數(shù)式編程,直接根據(jù)map查映射關(guān)系就找到了,很是方便.

最后總結(jié):

以后遇到if-else較多的場合,可以考慮使用Function函數(shù)代替

普通的方法是將一種數(shù)據(jù)類型作為參數(shù), 而Function方法是將一種方法或表達(dá)式作為參數(shù).

=======================補(bǔ)充: 與策略模式的對比=======================

策略模式也是為了解決分支過多問題,此外它還解決另一個大問題: 避免代碼侵入, 新增策略不需要修改原有策略代碼.此處主要對比第一點: 解決分支過多

策略模式通過兩層結(jié)構(gòu),完美實現(xiàn)了傳入不同的策略,執(zhí)行不同的方案,這與if-else的目標(biāo)是一致的,當(dāng)然與Function的目標(biāo)也是一致的.

傳入1, 選擇策略1,執(zhí)行策略1

傳入2,選擇策略2, 執(zhí)行策略2

如何實現(xiàn)傳入N,就能選擇策略N呢? 使用映射表Map<String, Strategy>, 這點和Function的思想是一樣,只不過策略模式通過類型獲取封裝好的策略實例,而Function通過類型獲取封裝好的策略方法.

從廣義上說, if-else, Function, 策略模式,它們?nèi)叨际遣呗?解決的都是分支問題,只不過粒度由小到大,重量級不同而已.

如何選擇呢?

能用if-else就不用Function,能用Function就不用策略模式

簡單的,就用輕量級的

復(fù)雜的,就用重量級的.

===============題外思考: Map的三種用法================

初級: Map<String, 普通數(shù)據(jù)類型>======>通過一個數(shù)據(jù)可以獲取另一個數(shù)據(jù) 中級: Map<String, 函數(shù)/表達(dá)式>=======> 通過一個數(shù)據(jù)可以獲取一個方法 高級: Map<String, 模式>=============> 通過一個數(shù)據(jù)可以獲取一個設(shè)計

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99日韩精品| 国产亚洲一区二区三区不卡| 国产91在线播放精品| 国产黄色精品| 精品视频黄色| 精品国产美女a久久9999| 麻豆成人91精品二区三区| 国产精品115| 欧美激情福利| 精品免费在线| 综合日韩av| 深夜视频一区二区| 国产精品av久久久久久麻豆网| 91超碰国产精品| 美女91精品| 99热精品在线| 伊人久久大香伊蕉在人线观看热v| 蜜桃视频一区二区三区| 日韩av影院| 久久久久97| 黑森林国产精品av| 亚洲a一区二区三区| 午夜欧美视频| 日韩精品亚洲aⅴ在线影院| 国产探花一区| 成人污污视频| av一区在线| 亚洲一区亚洲| 日本91福利区| 在线天堂中文资源最新版| 国产伊人久久| 亚洲特色特黄| 亚洲免费毛片| 精品午夜av| 精品中文字幕一区二区三区av| 中文不卡在线| 国产精品伦一区二区| 成人啊v在线| 蜜桃av一区二区在线观看| 日韩精品三级| 成人三级高清视频在线看| 亚洲欧洲一区二区天堂久久| 日韩精品视频网| 国产一区二区三区久久久久久久久| 国精品一区二区| 蜜桃一区二区三区在线| 麻豆视频一区二区| 99久精品视频在线观看视频| 一区二区三区网站| 国产一区二区三区不卡视频网站| 99视频精品免费观看| 国产精品久久久久久久久久久久久久久 | 激情国产在线| 欧美综合二区| 国产精品二区不卡| 久热综合在线亚洲精品| 欧美极品一区二区三区| 日本免费一区二区三区四区| 免费久久精品视频| 美女视频网站久久| 首页亚洲欧美制服丝腿| 久久伊人国产| 视频一区在线播放| 欧美激情另类| 青青草视频一区| 亚洲性视频h| 久久av免费| 视频在线在亚洲| 激情国产在线| 国产日韩一区二区三免费高清| 午夜视频精品| 91偷拍一区二区三区精品| 一本综合精品| 久久婷婷丁香| 麻豆国产91在线播放| 蜜臀久久久久久久| 日韩中文在线播放| 国产精品777777在线播放| 美女精品一区| 久久国产电影| 久久久久久色| 国产视频亚洲| 天堂√8在线中文| 97se亚洲| 亚洲视频国产| 亚洲免费观看| 亚洲成av在线| 你懂的国产精品永久在线| 亚洲精选成人| 欧美日韩国产欧| 日韩美女一区二区三区在线观看| 国产欧美69| 亚洲尤物av| 中文日韩在线| 激情欧美一区二区三区| 麻豆视频在线观看免费网站黄| 国产欧美日韩精品高清二区综合区 | 99久久精品费精品国产| 精品99久久| 国产精品一区二区三区美女| 亚洲欧美久久精品| 亚洲欧美日韩综合国产aⅴ| 欧美aa国产视频| 日韩欧美1区| 国产一区二区精品久| 免费看久久久| 久久精品欧洲| 欧美国产视频| 美女视频黄久久| 久久av国产紧身裤| 欧美日韩亚洲一区在线观看| 亚洲精品影院在线观看| 老色鬼久久亚洲一区二区| 好吊日精品视频| 欧美网站在线| 激情五月综合| 日韩视频在线一区二区三区 | 久久99久久人婷婷精品综合| 久久国产日韩欧美精品| 欧美亚洲专区| 日韩av影院| 国产调教一区二区三区| 久久国产乱子精品免费女| 日韩av在线免费观看不卡| 日本亚洲欧美天堂免费| 婷婷综合福利| 久久精品99国产精品日本| 国产欧美日韩免费观看| 国产精品1区在线| 久久精品国内一区二区三区| 国产精品日韩精品中文字幕| 欧美韩一区二区| 国产69精品久久| 亚洲播播91| 欧美日韩国产传媒| 国产麻豆综合| 美美哒免费高清在线观看视频一区二区| 久久午夜视频| 日韩一区二区三区高清在线观看 | 亚欧成人精品| 国产情侣一区| 激情不卡一区二区三区视频在线| 国产高清不卡| 亚洲一级网站| 亚洲免费激情| 日本精品在线播放| 麻豆国产精品777777在线| 中文字幕在线看片| 欧美福利在线| 日韩综合一区二区三区| 国产欧美高清视频在线| 水蜜桃久久夜色精品一区| 久久黄色影院| 亚洲伊人精品酒店| 牛牛精品成人免费视频| 久久久一二三| 亚洲色图综合| 久久精品国产在热久久| 欧美日韩精品在线一区| 午夜亚洲一区| 国产精品地址| 91精品国产91久久久久久黑人| 天使萌一区二区三区免费观看| 青青伊人久久| 欧美freesex黑人又粗又大| 好吊一区二区三区| 日韩精品亚洲aⅴ在线影院| 黄色网一区二区| 五月天久久777| 日韩av在线免费观看不卡| 日韩av片子| 国产精品美女| 久久99精品久久久久久园产越南| 亚洲特色特黄| 视频一区中文字幕精品| 成人午夜在线| 蜜桃av一区| 精品色999| 国产午夜久久| 久久伊人久久| 国产免费成人| 免费视频一区二区三区在线观看| 欧美肉体xxxx裸体137大胆| 日本一区二区三区视频在线看| 麻豆理论在线观看| 亚洲精品看片| 色吊丝一区二区| 国产日韩欧美三区| 蜜桃视频欧美| 国产精品一在线观看| 欧美日韩精品一本二本三本 | 国产精品福利在线观看播放| 蘑菇福利视频一区播放| 免费亚洲婷婷| 视频一区二区三区在线| 福利精品一区| 亚洲精品乱码日韩| 久久国产欧美| 免费一级欧美片在线观看网站| 日韩影院免费视频|