<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之旅 廣告
                > **設計模式-責任鏈模式** ## 說明 ## **責任鏈模式( Chain of Responsibility Pattern): 為請求創建了一個接收者對象的鏈,并沿這條鏈傳遞該請求,直到有對象處理它為止。這種模式能夠給予請求的類型,對請求的發送者和接收者進行解耦。** ---------- ##模式說明## <h5>要解決的問題</h5> > 1.當不確定該使用某個處理對象時,可動態指定一組對象來進行業務處理。 > 2.當需要進行任務層級遞交處理時,可以進行上級關聯,進行業務遞交申請。 <h5>適用的場景</h5> > 1.流程審批 > 2.攔截器處理 > 3.日志系統搭建 > 4.laravel中間件 ##示例代碼## /** * 責任鏈模式( Chain of Responsibility Pattern) * 為請求創建了一個接收者對象的鏈,并沿這條鏈傳遞該請求,直到有對象處理它為止。這種模式能夠給予請求的類型,對請求的發送者和接收者進行解耦。 */ header('Content-Type: text/plain'); //定義錯誤級別類,對不同的犯錯界別給與同的處理 class Info{ protected $levelNum=1; protected $next='Warning'; public function process($level){ if($level <= $this->levelNum ){ echo "等級{$level}級別給予提示說明".PHP_EOL; }else{ $objUp= new $this->next; $objUp->process($level); } } } class Warning{ protected $levelNum=2; protected $next='Error1'; public function process($level){ if($level <= $this->levelNum ){ echo "等級{$level}的錯誤給予口頭警告".PHP_EOL; }else{ $objUp= new $this->next; $objUp->process($level); } } } class Error1{ protected $levelNum=3; public function process($level){ if($level <= $this->levelNum ){ echo "等級{$level}級別的錯誤給予制裁".PHP_EOL; }else{ throw new Exception("最后一個級別必須處理,沒有處理,程序有問題"); } } } $leave=1; $obj= new Info(); $obj->process($leave); $leave=2; $obj->process($leave); $leave=3; $obj->process($leave); ---------- 結果: 等級1級別給予提示說明 等級2的錯誤給予口頭警告 等級3級別的錯誤給予制裁 ##責任鏈模式的其他問題## 一是性能問題,每個請求都是從鏈頭遍歷到鏈尾,特別是在鏈比較長的時候,性能是一個問題。二是調試不是很方便,特別是鏈條比較長的,環節比較多的時候,由于采用了類似遞歸的方式 ,調試的時候邏輯可能比較復雜。 ## 結尾 ## <p style="background-image: -webkit-linear-gradient(left, #3498db, #f47920 10%, #d71345 20%, #f7acbc 30%,#ffd400 40%, #3498db 50%, #f47920 60%, #d71345 70%, #f7acbc 80%, #ffd400 90%, #3498db);color: transparent;-webkit-text-fill-color: transparent;-webkit-background-clip: text;text-align:center;"> 心如花木,向陽而生。 </p> [1]: https://blog.zxliu.cn/usr/uploads/2020/11/2353528746.png [2]: https://blog.zxliu.cn/usr/uploads/2020/11/1966401635.png
                  <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>

                              哎呀哎呀视频在线观看