国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

Map+函數(shù)式接口方法替換if/else

IT那活兒 / 3066人閱讀
Map+函數(shù)式接口方法替換if/else

點(diǎn)擊上方“IT那活兒”,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了!!!





if/else



1. 需求

項(xiàng)目中根據(jù)數(shù)據(jù)庫(kù)字段type的不同,會(huì)有不同的處理邏輯。
現(xiàn)在假設(shè)一個(gè)場(chǎng)景:
根據(jù)優(yōu)惠券的類(lèi)型resourceType和編碼resourceId來(lái) 查詢 發(fā)放方式grantType和領(lǐng)取規(guī)則。
2. 實(shí)現(xiàn)方式
根據(jù)優(yōu)惠券類(lèi)型resourceType -> 確定查詢哪個(gè)數(shù)據(jù)表。
根據(jù)編碼resourceId -> 到對(duì)應(yīng)的數(shù)據(jù)表里邊查詢優(yōu)惠券的派發(fā)方式grantType和領(lǐng)取規(guī)則。
優(yōu)惠券有多種類(lèi)型,分別對(duì)應(yīng)了不同的數(shù)據(jù)庫(kù)表:
  • 紅包 —— 紅包發(fā)放規(guī)則表

  • 購(gòu)物券 —— 購(gòu)物券表

  • QQ會(huì)員

  • 外賣(mài)會(huì)員

實(shí)際的優(yōu)惠券遠(yuǎn)不止這些,這個(gè)需求是要我們寫(xiě)一個(gè)業(yè)務(wù)分派的邏輯。
第一個(gè)能想到的思路就是if-else或者switch case:
如果要這么寫(xiě)的話, 一個(gè)方法的代碼可就太長(zhǎng)了,影響了可讀性。(別看著上面case里面只有 一句話,但實(shí)際情況是有很多行的)。





策略模式優(yōu)化if/else




策略模式在業(yè)務(wù)邏輯分派的時(shí)候還是if-else,只是說(shuō)比第一種思路的if-else 更好維護(hù)一點(diǎn)。
但缺點(diǎn)也明顯:
1)如果 if-else的判斷情況很多,那么對(duì)應(yīng)的具體策略實(shí)現(xiàn)類(lèi)也會(huì)很多,上邊的具體的策略實(shí) 現(xiàn)類(lèi)也會(huì)增多。
2)沒(méi)法俯視整個(gè)分派的業(yè)務(wù)邏輯。





Map+函數(shù)接口



用上了Java8的新特性lambda表達(dá)式。
判斷條件放在key中;
對(duì)應(yīng)的業(yè)務(wù)邏輯放在value中。
這樣子寫(xiě)的好處是非常直觀,能直接看到判斷條件對(duì)應(yīng)的業(yè)務(wù)邏輯。
如果單個(gè) if 語(yǔ)句塊的業(yè)務(wù)邏輯有很多行的話,我們可以把這些業(yè)務(wù)操作抽出來(lái),寫(xiě)成一個(gè)多帶帶的Service,即:
入?yún)tring resourceId是用來(lái)查數(shù)據(jù)庫(kù)的,這里簡(jiǎn)化了,傳參之后不做處理。
用http調(diào)用的結(jié)果:




總  結(jié)



策略模式通過(guò)接口、實(shí)現(xiàn)類(lèi)、邏輯分派來(lái)完成,把 if語(yǔ)句塊的邏輯抽出來(lái)寫(xiě)成一個(gè)類(lèi),更好維護(hù)。
Map+函數(shù)式接口通過(guò)Map.get(key)來(lái)代替 if-else的業(yè)務(wù)分派,能夠避免策略模式帶來(lái)的類(lèi)增多、難以俯視整個(gè)業(yè)務(wù)邏輯的問(wèn)題。



本文作者:牛 森

本文來(lái)源:IT那活兒(上海新炬王翦團(tuán)隊(duì))

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/129591.html

相關(guān)文章

  • 編程范 —— 函數(shù)編程入門(mén)

    摘要:在函數(shù)式編程中數(shù)據(jù)在由純函數(shù)組成的管道中傳遞。函數(shù)式編程中函子是實(shí)現(xiàn)了函數(shù)的容器下文中將函子視為范疇,模型可表示如下但是在函數(shù)式編程中要避免使用這種面向?qū)ο蟮木幊谭绞饺《畬?duì)外暴露了一個(gè)的接口也稱(chēng)為。 showImg(https://segmentfault.com/img/remote/1460000018101204); 該系列會(huì)有 3 篇文章,分別介紹什么是函數(shù)式編程、剖析函數(shù)...

    flyer_dev 評(píng)論0 收藏0
  • JavaScript函數(shù)編程入門(mén)經(jīng)典

    摘要:函數(shù)式編程的定義函數(shù)是一段可以通過(guò)其名稱(chēng)被調(diào)用的代碼。純函數(shù)大多數(shù)函數(shù)式編程的好處來(lái)自于編寫(xiě)純函數(shù),純函數(shù)是對(duì)給定的輸入返回相同的輸出的函數(shù),并且純函數(shù)不應(yīng)依賴(lài)任何外部變量,也不應(yīng)改變?nèi)魏瓮獠孔兞俊? 一個(gè)持續(xù)更新的github筆記,鏈接地址:Front-End-Basics,可以watch,也可以star。 此篇文章的地址:JavaScript函數(shù)式編程入門(mén)經(jīng)典 正文開(kāi)始 什么是函...

    silvertheo 評(píng)論0 收藏0
  • 攻克前端javascript面試:什么是函數(shù)編程?

    摘要:僅在幾年以前,僅有少數(shù)的程序員知道函數(shù)式編程是什么。函數(shù)式編程是聲明性的而不是命令式的應(yīng)用狀態(tài)流經(jīng)純函數(shù)中。函數(shù)式編程是一種編程模式。在理解軟件是如何使用函數(shù)式編程構(gòu)建時(shí),理解函數(shù)組合是非常重要的一步。不可變性是函數(shù)式編程的核心概念。 函數(shù)式編程已然變成了一個(gè)javascript語(yǔ)言中一個(gè)非常熱門(mén)的話題。僅在幾年以前,僅有少數(shù)的js程序員知道函數(shù)式編程是什么。但是在過(guò)去三年中,我所見(jiàn)過(guò)...

    wslongchen 評(píng)論0 收藏0
  • 函數(shù)入門(mén)(什么是函數(shù)編程)

    摘要:第一節(jié)函數(shù)式范式什么是函數(shù)式編程函數(shù)式編程英語(yǔ)或稱(chēng)函數(shù)程序設(shè)計(jì),又稱(chēng)泛函編程,是一種編程范型,它將電腦運(yùn)算視為數(shù)學(xué)上的函數(shù)計(jì)算,并且避免使用程序狀態(tài)以及易變對(duì)象。 第一節(jié) 函數(shù)式范式 1. 什么是函數(shù)式編程 函數(shù)式編程(英語(yǔ):functional programming)或稱(chēng)函數(shù)程序設(shè)計(jì),又稱(chēng)泛函編程,是一種編程范型,它將電腦運(yùn)算視為數(shù)學(xué)上的函數(shù)計(jì)算,并且避免使用程序狀態(tài)以及易變對(duì)...

    StonePanda 評(píng)論0 收藏0
  • js函數(shù)編程術(shù)語(yǔ)總結(jié)

    摘要:而純函數(shù),主要強(qiáng)調(diào)相同的輸入,多次調(diào)用,輸出也相同且無(wú)副作用。對(duì)于組合可能不返回值的函數(shù)很有用在其它的一些地方,也稱(chēng)為,也稱(chēng)為,也稱(chēng)為 參考文檔1 參考文檔2 函數(shù)式編程術(shù)語(yǔ) 高階函數(shù) Higher-Order Functions 以函數(shù)為參數(shù)的函數(shù) 返回一個(gè)函數(shù)的函數(shù) 函數(shù)的元 Arity 比如,一個(gè)帶有兩個(gè)參數(shù)的函數(shù)被稱(chēng)為二元函數(shù) 惰性求值 Lazy evaluation 是...

    番茄西紅柿 評(píng)論0 收藏0
  • 編寫(xiě)扁平化的代碼

    摘要:原文作者給你的代碼增加一點(diǎn)點(diǎn)函數(shù)式編程的特性最近我對(duì)函數(shù)式編程非常感興趣。對(duì)我而言,函數(shù)式編程最大的作用就是強(qiáng)制你編寫(xiě)聲明性代碼代碼描述你做什么,而不是在描述如何做。事實(shí)證明,編寫(xiě)聲明式代碼是函數(shù)式編程中最簡(jiǎn)單的部分之一。 原文:Writing flat & declarative code作者:Peeke Kuepers -- 給你的代碼增加一點(diǎn)點(diǎn)函數(shù)式編程的特性 最近我對(duì)函數(shù)式編程...

    lunaticf 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<