<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                >[success] # 職責鏈和策略 ~~~ 1.如果是單純的來看感覺二者都是在解決 if else 的問題但實際上 1.1.策略模式:策略是關于擁有一個通用接口的,您可以使用該通用接口來提供算法的不同實現, 或者提供具有某些公共依賴性的幾種算法或邏輯塊,因為js 特殊性質天生策略。因此直接使用對象 定義好key value 的映射關系形成調用,'場景上'利用的是多態機制,實現同一行為在不同場景具有不同實現 需要根據不同場景切換算法 1.2.職責鏈是關于擁有一系列對象的,這些對象通常從更詳細到更通用。鏈中的每個部分都可以提供答案, 但是它們具有不同的詳細程度,常見更多的'場景上',處理一個任務,中間有多個角色,每個角色按序處理 各自的多個任務多個對象處理同一請求,但具體由哪個對象處理則在運行時動態決定 動態指定一組對象處理 請求 2.策略模式和責任鏈模式很像,都是有多個對象去處理同一個請求不同之處在于對于同一個請求,策略模式是 可以選擇哪個具體的策略類來進行處理而責任鏈模式不能根據請求去判斷使用哪個類來處理,需要鏈路上的處 理類 全部來處理一遍才能得出結果 ~~~ >[success] # 二者的類圖 ~~~ 1.通過類圖來看策略是要有統一的,抽象策略(Strategy)類:定義了一個公共接口,各種不同的算法以不同的 方式實現這個接口,環境角色使用這個接口調用不同的算 2.職責鏈每個鏈上的對象不用統一,最后通過和具體將每個環節連接一起的處理者將他們形成鏈子連接起來 ~~~ >[danger] ##### 策略模式圖 ![](https://img.kancloud.cn/04/9c/049cb6b5f31942f651e6198d5da00f82_700x286.png) >[danger] ##### 職責鏈 ![](https://img.kancloud.cn/11/3f/113fdd03c48d442ee2f96bacd8fbb34d_750x477.png) >[danger] ##### 上面案例去拆分成策略模式來看 ~~~ 1.還需要轉譯 將類型1,2,3 對應到下面策略組對應key,整個案例來看A 不行B來處理要不就C來處理, 策略更多的感覺明確在調用時候就知道要用誰來做,職責鏈只是將請求參數不斷下移給到真正能處理 ,整個案例如果想明確知道誰來處理需要將條件轉譯對應策略組的key '以后再思考目前思考的感覺總結 ' ~~~ ~~~ // 單純來看從策略模式來拆分 const orderStrategy = { orderType1(){ if(pay){ console.log("獲得購物券100"); }else{ // 這里可能是縮寫 // this.orderType3() if(stock>0){ console.log("正常購買"); }else{ console.log("沒貨了"); } } }, orderType2(){ if(pay){ console.log("獲得購物券50"); }else{ // 這里可能是縮寫 // this.orderType3() if(stock>0){ console.log("正常購買"); }else{ console.log("沒貨了"); } } }, orderType3(){ if(stock>0){ console.log("正常購買"); }else{ console.log("沒貨了"); } } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看