<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          設(shè)計(jì)模式處理 if-else 語(yǔ)句

          共 1260字,需瀏覽 3分鐘

           ·

          2021-09-28 04:26


          點(diǎn)擊上方 藍(lán)字 關(guān)注我們!



          2021 最新 Java 編程資料免費(fèi)領(lǐng)!Java 視頻教程,Java Web 項(xiàng)目教程,互聯(lián)網(wǎng)Java 面試真題 / 算法題,簡(jiǎn)歷模板,Linux 服務(wù)器等等,點(diǎn)擊領(lǐng)取!

          來(lái)源:love1024.blog.csdn.net/

          article/details/104955363

          • 場(chǎng)景
            • 1.優(yōu)先判斷條件,不滿足及時(shí)中斷
            • 2.策略模式改造
            • 3.策略模式+工廠+單例模式,錦上添花

          場(chǎng)景

          日常開發(fā),if-else語(yǔ)句寫的不少吧??當(dāng)邏輯分支非常多的時(shí)候,if-else套了一層又一層,雖然業(yè)務(wù)功能倒是實(shí)現(xiàn)了,但是看起來(lái)是真的很不優(yōu)雅,尤其是對(duì)于我這種有強(qiáng)迫癥的程序"猿",看到這么多if-else,腦袋瓜子就嗡嗡的,總想著解鎖新姿勢(shì):干掉過(guò)多的if-else?。。?/p>

          本文將介紹三板斧手段:

          • 優(yōu)先判斷條件,條件不滿足的,邏輯及時(shí)中斷返回;
          • 融入策略模式;
          • 策略模式+工廠+單例模式,錦上添花;

          接下來(lái)先附上一段很久以前自己寫的業(yè)務(wù)代碼,核心邏輯就是在支付回調(diào)中根據(jù)用戶購(gòu)買的價(jià)格包賦予用戶對(duì)應(yīng)的權(quán)益(VIP視頻會(huì)員天數(shù)+抽獎(jiǎng)機(jī)會(huì)次數(shù))。

          我的天,太多if-else了……(看不清楚可以點(diǎn)擊圖片放大)

          圖片

          1.優(yōu)先判斷條件,不滿足及時(shí)中斷

          這點(diǎn)非常容易理解,就是說(shuō)在業(yè)務(wù)邏輯里面,先把不符合條件的給先過(guò)濾掉,而不是層層嵌套if-else判斷,結(jié)合代碼圖看一下:

          圖片
          圖片

          2.策略模式改造

          先用策略模式,替換掉文章開頭講到的,用戶充值后根據(jù)價(jià)格包(付的多少錢)給用戶增加VIP天數(shù)及抽檢機(jī)會(huì)次數(shù)的邏輯,我這里就簡(jiǎn)化成"根據(jù)-價(jià)格包區(qū)分給用戶增加不同的體育會(huì)員視頻VIP天數(shù)"這個(gè)動(dòng)作來(lái)講解:

          圖片
          圖片
          圖片
          圖片
          圖片

          表面上看,代碼稍微優(yōu)雅了點(diǎn),但是還是沒和if-else徹底說(shuō)拜拜,且recharge()充值方法可單獨(dú)拎出來(lái),只需要根據(jù)priceCode實(shí)例化不同的策略對(duì)象即可:

          圖片

          3.策略模式+工廠+單例模式,錦上添花

          接下來(lái)使用"工廠類+單例"來(lái)給代碼加點(diǎn)料:

          圖片
          圖片
          圖片

          往期推薦

          程序員被公司辭退都12天了,前領(lǐng)導(dǎo)要求回公司講清楚代碼

          被迫降級(jí)降薪,說(shuō)好的共同富裕呢?

          以為工作了十年,其實(shí)卻只有一年的工作經(jīng)驗(yàn),只不過(guò)又重復(fù)用了九年

          Visual Studio 上架微軟商店了,你怎么看?

          為什么要使用微服務(wù)架構(gòu)和這些組件?

          SpringBoot+Redis 如何防止瞬間幾千次的重復(fù)提交?


          END



          若覺得文章對(duì)你有幫助,隨手轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動(dòng)力。


          長(zhǎng)按二維碼,掃掃關(guān)注哦

          ?「C語(yǔ)言中文網(wǎng)」官方公眾號(hào),關(guān)注手機(jī)閱讀教程 ?


          學(xué)習(xí)資料包括: Java,算法,數(shù)據(jù)庫(kù),Linux,簡(jiǎn)歷,運(yùn)維 等編程分類,在不斷更新中哦


          點(diǎn)擊“閱讀原文”,馬上免費(fèi)領(lǐng)??!
          ??????
          瀏覽 65
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲AV无码秘 蜜桃渚光希 | 国产女人18毛片精品18水 | 夜夜操,天天操 | 日韩中文字幕在线播放 | 天干夜天干天天天爽 |