<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      DesignPattern系列__02接口隔離原則

      介紹

      客戶端不應該依賴它不需要的接口,即一個類對另一個類的依賴應該建立在最小接口上

      Demo引入

      先來看一張圖:

      interface MyInterface {
          void  operation1();
          void  operation2();
          void  operation3();
          void  operation4();
          void  operation5();
      }
      
      class B implements MyInterface {
      
          @Override
          public void operation1() {
              System.out.println("B實現了operation1");
          }
      
          @Override
          public void operation2() {
              System.out.println("B實現了operation2");
          }
      
          @Override
          public void operation3() {
              System.out.println("B實現了operation3");
          }
      
          @Override
          public void operation4() {
              System.out.println("B實現了operation4");
          }
      
          @Override
          public void operation5() {
              System.out.println("B實現了operation5");
          }
      }
      
      class D implements MyInterface {
      
          @Override
          public void operation1() {
              System.out.println("D實現了operation1");
          }
      
          @Override
          public void operation2() {
              System.out.println("D實現了operation2");
          }
      
          @Override
          public void operation3() {
              System.out.println("D實現了operation3");
          }
      
          @Override
          public void operation4() {
              System.out.println("D實現了operation4");
          }
      
          @Override
          public void operation5() {
              System.out.println("D實現了operation5");
          }
      }
      
      class A {
          //類A通過接口MyInterface依賴(使用)B類, 但是只使用1,2,3方法
          public void depand1(MyInterface myInterface) {
              myInterface.operation1();
          }
      
          public void depand2(MyInterface myInterface) {
              myInterface.operation2();
          }
      
          public void depand3(MyInterface myInterface) {
              myInterface.operation3();
          }
      }
      
      class C {
          public void depand1(MyInterface myInterface) {
              myInterface.operation1();
          }
      
          public void depand4(MyInterface myInterface) {
              myInterface.operation4();
          }
      
          public void depand5(MyInterface myInterface) {
              myInterface.operation5();
          }
      }
      

      如上圖所示:類A通過接口MyInterface依賴類B,類C通過接口MyInterface依賴類D;但是,類A只是想要使用B實現的接口MyInterface中的1,2,3方法,類C想要使用類D實現的接口MyInterface中的1,4,5方法;所以,現在的設計,從接口隔離原則的角度來說,不符合“最小接口”。

      改進措施:

      既然接口MyInterface中的方法對于實現類來說,不是全部都需要的,那么,我們根據需求,將原來的接口進行拆分:

      如圖所示: 將原來的一個接口拆分為三個,對應的code如下:

      interface MyInterface1 {
          void operation1();
      
      }
      
      interface MyInterface2 {
          void operation2();
          void operation3();
      
      }
      
      interface MyInterface3 {
          void  operation4();
          void  operation5();
      }
      
      class B implements MyInterface1, MyInterface2 {
      
          @Override
          public void operation1() {
              System.out.println("B實現了operation1");
          }
      
          @Override
          public void operation2() {
              System.out.println("B實現了operation2");
          }
      
          @Override
          public void operation3() {
              System.out.println("B實現了operation3");
          }
      
      }
      
      class D implements MyInterface1, MyInterface3 {
      
          @Override
          public void operation1() {
              System.out.println("D實現了operation1");
          }
      
          @Override
          public void operation4() {
              System.out.println("D實現了operation4");
          }
      
          @Override
          public void operation5() {
              System.out.println("D實現了operation5");
          }
      }
      
      class A {
          //類A通過接口MyInterface依賴(使用)B類, 但是只使用1,2,3方法
          public void depand1(MyInterface1 myInterface) {
              myInterface.operation1();
          }
      
          public void depand2(MyInterface2 myInterface) {
              myInterface.operation2();
          }
      
          public void depand3(MyInterface2 myInterface) {
              myInterface.operation3();
          }
      }
      
      class C {
          public void depand1(MyInterface1 myInterface) {
              myInterface.operation1();
          }
      
          public void depand4(MyInterface3 myInterface) {
              myInterface.operation4();
          }
      
          public void depand5(MyInterface3 myInterface) {
              myInterface.operation5();
          }
      }
      

      總結

      接口的設計盡量要小

      這是接口隔離的核心,當然過小的接口會導致項目結構的負責度增加,在實際使用中,要合理把握尺度。

      接口要高內聚

      即接口盡量少的公布public方法,在項目開發中,接口通常充當規范來使用,是一種承諾,承諾越少越有利于系統開發。

      posted @ 2019-08-04 21:25  本墨  閱讀(235)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 中文字幕午夜福利片午夜福利片97| 2020久久香蕉国产线看观看| 无码人妻丝袜在线视频| 国产精品熟女一区二区三区| 福利一区二区在线视频| 色又黄又爽18禁免费视频| 最新中文字幕av无码专区不| 强奷白丝美女在线观看| 色爱综合激情五月激情| 日本免费视频| 国产一区二区三区四区激情| 国产精品乱人伦一区二区| 亚洲国产精品高清久久久| 大地资源高清免费观看| 亚洲av网一区天堂福利| 中文在线最新版天堂| 亚洲码国产精品高潮在线| 国产精品一区二区三区污| 日日噜噜夜夜狠狠久久无码区| 久热这里只有精品12| 色偷偷女人的天堂亚洲网| 露脸一二三区国语对白| 亚洲成人动漫av在线| 日本道播放一区二区三区| 性男女做视频观看网站| 欧美情侣性视频| 成人亚洲一级午夜激情网| 亚洲一区二区三成人精品| 伊人成人在线视频免费| 精品无码国产自产拍在线观看蜜| 国产精品日韩av一区二区| 国产精品无遮挡猛进猛出| 无遮高潮国产免费观看| 免费国产精品黄色一区二区 | 久久久久久无码午夜精品直播| 国产成人无码A区在线观看视频| 日韩女同一区二区三区久久| 亚洲国产精品久久久久秋霞| 99热精品毛片全部国产无缓冲| аⅴ天堂中文在线网| 久久人人97超碰人人澡爱香蕉 |