<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                **接口隔離原則**:每一個接口只負責一種角色(干一件事)。 * 客戶端不應該依賴它不需要的接口 * 類間的依賴關系應該建立在最小的接口上 >[danger]接口隔離原則和單一職責原則的審視角度是不同的,單一職責原則要求類和接口職責單一,注重的是職責,是業務邏輯上的劃分,而接口隔離原則要求方法要盡可能的少,是在接口設計上的考慮。例如一個接口的職責包含10個方法,這10個方法都放在一個接口中,并且提供給多個模塊訪問,各個模塊按照規定的權限來訪問,并規定了“不使用的方法不能訪問”,這樣的設計是不符合接口隔離原則的,接口隔離原則要求“盡量使用多個專門的接口”,這里專門的接口就是指提供給每個模塊的都應該是單一接口(即每一個模塊對應一個接口),而不是建立一個龐大臃腫的接口來容納所有的客戶端訪問 沒有哪個設計可以十全十美的考慮到所有的設計原則:**根據接口隔離原則拆分接口時,首先必須滿足單一職責原則** 它要求客戶端不應該依賴于它不需要的接口。換句話說,一個類不應該強迫它的客戶端實現它們不需要的接口方法。 下面通過一個簡單的 PHP 示例來說明接口隔離原則: ~~~ interface Printer { public function print(); } interface Scanner { public function scan(); } interface FaxMachine { public function fax(); } class AllInOnePrinter implements Printer, Scanner, FaxMachine { public function print() { // 打印的邏輯 } public function scan() { // 掃描的邏輯 } public function fax() { // 傳真的邏輯 } } class SimplePrinter implements Printer { public function print() { // 打印的邏輯 } } class PhotoCopier implements Printer, Scanner { public function print() { // 打印的邏輯 } public function scan() { // 掃描的邏輯 } } ~~~ 在上面的示例中,我們有三個接口 `Printer`、`Scanner` 和 `FaxMachine`,它們分別定義了打印、掃描和傳真的方法。`AllInOnePrinter` 類實現了所有三個接口,表示它具備打印、掃描和傳真的功能。`SimplePrinter` 類只實現了 `Printer` 接口,表示它只具備打印的功能。`PhotoCopier` 類實現了 `Printer` 和 `Scanner` 接口,表示它具備打印和掃描的功能。 通過接口隔離原則,我們將功能拆分為多個小接口,每個接口只包含一個特定的功能。這樣,客戶端就可以根據需要選擇性地依賴于這些接口,而不必強制實現不需要的方法。這提高了代碼的靈活性和可維護性,使得系統更加可擴展和可復用。 總之,接口隔離原則要求客戶端不應該依賴于它們不需要的接口。通過拆分大接口為小接口,我們可以減少類之間的耦合度,增強代碼的靈活性和可維護性。 ``` // 做布娃娃的小作坊,工序有給布娃娃扎辮子、穿衣服、包裝入箱、打標簽 interface Work { public function hairBraiding(); public function getDressed(); public function packingIntoTheBox(); public function makeTag(); } // 王大媽被分配去給布娃娃穿衣服 class WangMather2 implements Work{ /* * @Override * 扎辮子 * */ public function hairBraiding() {} /* * @Override * 穿衣服 * */ public function getDressed() { echo "王大媽給布娃娃穿衣服"; } /* * @Override * 包裝入箱 * */ public function packingIntoTheBox() {} /* * @Override * 打標簽 * */ public function makeTag() {} } // 李大姨被分配去給布娃娃扎辮子 class LiAunt2 implements Work { /* * @Override * 扎辮子 * */ public void hairBraiding() { echo "李大姨給布娃娃扎辮子"; } /* * @Override * 穿衣服 * */ public void getDressed() {} /* * @Override * 包裝入箱 * */ public void packingIntoTheBox() {} /* * @Override * 打標簽 * */ public void makeTag() {} } // 李大姨被分配去給布娃娃扎辮子,王大媽被分配去給布娃娃穿衣服,但是卻都要實現其他 3 個多余的接口 // 符合接口隔離的工作流程是,單獨 /** * 扎辮子 */ interface Hair { public function hairBraiding(); } /** * 穿衣服 */ interface Dress { public function getDressed(); } /** * 包裝入箱 */ interface Box { public function packingIntoTheBox(); } /** * 打標簽 */ interface Tag { public function makeTag(); } /** * 李大姨給布娃娃扎辮子快 */ class LiAunt3 implements Hair { /* * @Override * 扎辮子 * */ public void hairBraiding() { echo "李大姨給布娃娃扎辮子"; } } /** * 王大媽給布娃娃穿衣服快 */ class WangMather3 implements Dress{ /* * @Override * 穿衣服 * */ public void getDressed() { echo "王大媽給布娃娃穿衣服"; } } /** * 陳大叔包裝快 */ class ChenUncle implements Box { /* * @Override * 裝箱 * */ public void packingIntoTheBox() { echo "陳大叔給布娃娃裝箱"; } } /** * 黃大姐貼標簽快 */ class HuangSister implements Tag { /* * @Override * 打標簽 * */de public void makeTag() { echo "黃大姐給箱子打標簽"; } } // 測試代碼 $liAunt3 = new LiAunt3(); $wangMather3 = new WangMather3(); $chenUncle = new ChenUncle(); $huangSister = new HuangSister(); $liAunt3->hairBraiding(); $wangMather3->getDressed(); $chenUncle->packingIntoTheBox(); $huangSister->makeTag(); ```
                  <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>

                              哎呀哎呀视频在线观看