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

資訊專欄INFORMATION COLUMN

Map+函數式接口方法替換if/else

IT那活兒 / 3069人閱讀
Map+函數式接口方法替換if/else

點擊上方“IT那活兒”,關注后了解更多內容,不管IT什么活兒,干就完了!!!





if/else



1. 需求

項目中根據數據庫字段type的不同,會有不同的處理邏輯。
現在假設一個場景:
根據優惠券的類型resourceType和編碼resourceId來 查詢 發放方式grantType和領取規則。
2. 實現方式
根據優惠券類型resourceType -> 確定查詢哪個數據表。
根據編碼resourceId -> 到對應的數據表里邊查詢優惠券的派發方式grantType和領取規則。
優惠券有多種類型,分別對應了不同的數據庫表:
  • 紅包 —— 紅包發放規則表

  • 購物券 —— 購物券表

  • QQ會員

  • 外賣會員

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





策略模式優化if/else




策略模式在業務邏輯分派的時候還是if-else,只是說比第一種思路的if-else 更好維護一點。
但缺點也明顯:
1)如果 if-else的判斷情況很多,那么對應的具體策略實現類也會很多,上邊的具體的策略實 現類也會增多。
2)沒法俯視整個分派的業務邏輯。





Map+函數接口



用上了Java8的新特性lambda表達式。
判斷條件放在key中;
對應的業務邏輯放在value中。
這樣子寫的好處是非常直觀,能直接看到判斷條件對應的業務邏輯。
如果單個 if 語句塊的業務邏輯有很多行的話,我們可以把這些業務操作抽出來,寫成一個多帶帶的Service,即:
入參String resourceId是用來查數據庫的,這里簡化了,傳參之后不做處理。
用http調用的結果:




總  結



策略模式通過接口、實現類、邏輯分派來完成,把 if語句塊的邏輯抽出來寫成一個類,更好維護。
Map+函數式接口通過Map.get(key)來代替 if-else的業務分派,能夠避免策略模式帶來的類增多、難以俯視整個業務邏輯的問題。



本文作者:牛 森

本文來源:IT那活兒(上海新炬王翦團隊)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/129591.html

相關文章

  • 編程范 —— 函數編程入門

    摘要:在函數式編程中數據在由純函數組成的管道中傳遞。函數式編程中函子是實現了函數的容器下文中將函子視為范疇,模型可表示如下但是在函數式編程中要避免使用這種面向對象的編程方式取而代之對外暴露了一個的接口也稱為。 showImg(https://segmentfault.com/img/remote/1460000018101204); 該系列會有 3 篇文章,分別介紹什么是函數式編程、剖析函數...

    flyer_dev 評論0 收藏0
  • JavaScript函數編程入門經典

    摘要:函數式編程的定義函數是一段可以通過其名稱被調用的代碼。純函數大多數函數式編程的好處來自于編寫純函數,純函數是對給定的輸入返回相同的輸出的函數,并且純函數不應依賴任何外部變量,也不應改變任何外部變量。 一個持續更新的github筆記,鏈接地址:Front-End-Basics,可以watch,也可以star。 此篇文章的地址:JavaScript函數式編程入門經典 正文開始 什么是函...

    silvertheo 評論0 收藏0
  • 攻克前端javascript面試:什么是函數編程?

    摘要:僅在幾年以前,僅有少數的程序員知道函數式編程是什么。函數式編程是聲明性的而不是命令式的應用狀態流經純函數中。函數式編程是一種編程模式。在理解軟件是如何使用函數式編程構建時,理解函數組合是非常重要的一步。不可變性是函數式編程的核心概念。 函數式編程已然變成了一個javascript語言中一個非常熱門的話題。僅在幾年以前,僅有少數的js程序員知道函數式編程是什么。但是在過去三年中,我所見過...

    wslongchen 評論0 收藏0
  • 函數入門(什么是函數編程)

    摘要:第一節函數式范式什么是函數式編程函數式編程英語或稱函數程序設計,又稱泛函編程,是一種編程范型,它將電腦運算視為數學上的函數計算,并且避免使用程序狀態以及易變對象。 第一節 函數式范式 1. 什么是函數式編程 函數式編程(英語:functional programming)或稱函數程序設計,又稱泛函編程,是一種編程范型,它將電腦運算視為數學上的函數計算,并且避免使用程序狀態以及易變對...

    StonePanda 評論0 收藏0
  • js函數編程術語總結

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

    番茄西紅柿 評論0 收藏0
  • 編寫扁平化的代碼

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

    lunaticf 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<