<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之旅 廣告
                # 不兼容結構的協調——適配器模式(三) 9.4 類適配器 除了對象適配器模式之外,適配器模式還有一種形式,那就是類適配器模式,類適配器模式和對象適配器模式最大的區別在于適配器和適配者之間的關系不同,對象適配器模式中適配器和適配者之間是關聯關系,而類適配器模式中適配器和適配者是繼承關系,類適配器模式結構如圖9-5所示: ![](http://img.my.csdn.net/uploads/201303/01/1362099343_7447.jpg) 圖 9-5 類適配器模式結構圖 根據類適配器模式結構圖,適配器類實現了抽象目標類接口Target,并繼承了適配者類,在適配器類的request()方法中調用所繼承的適配者類的specificRequest()方法,實現了適配。 典型的類適配器代碼如下所示: ``` class Adapter extends Adaptee implements Target { public void request() { specificRequest(); } } ``` 由于Java、C#等語言不支持多重類繼承,因此類適配器的使用受到很多限制,例如如果目標抽象類Target不是接口,而是一個類,就無法使用類適配器;此外,如果適配者Adapter為最終(Final)類,也無法使用類適配器。在Java等面向對象編程語言中,大部分情況下我們使用的是對象適配器,類適配器較少使用。 思考 > 在類適配器中,一個適配器能否適配多個適配者?如果能,應該如何實現?如果不能,請說明原因? 9.5 雙向適配器 在對象適配器的使用過程中,如果在適配器中同時包含對目標類和適配者類的引用,適配者可以通過它調用目標類中的方法,目標類也可以通過它調用適配者類中的方法,那么該適配器就是一個雙向適配器,其結構示意圖如圖9-6所示: ![](http://img.my.csdn.net/uploads/201303/01/1362100282_9857.jpg) 圖9-6 雙向適配器結構示意圖 雙向適配器的實現較為復雜,其典型代碼如下所示: ``` class Adapter implements Target,Adaptee { //同時維持對抽象目標類和適配者的引用 private Target target; private Adaptee adaptee; public Adapter(Target target) { this.target = target; } public Adapter(Adaptee adaptee) { this.adaptee = adaptee; } public void request() { adaptee.specificRequest(); } public void specificRequest() { target.request(); } } ``` 在實際開發中,我們很少使用雙向適配器。
                  <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>

                              哎呀哎呀视频在线观看