合工大很牛很牛牛

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            14 Posts :: 1 Stories :: 37 Comments :: 0 Trackbacks

          常用鏈接

          留言簿(1)

          我參與的團隊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           

          新舊兩個接口,功能類似,舊的接口已漸漸不再使用,如何讓舊接口調整為新接口的樣式呢(方便其他程序調用)?寫一個銜接作用的adapter即可。

           

          如下:DuckTurkey是兩個接口,他們的功能類似,僅僅是方法的名稱不同。如何把Turkey接口調整成Duck,以方便調用呢?

          package javaapplication31;

           

          public class Main {

              public static void main(String[] args) {

                  Duck duck = new MallardDuck();

                  duck.quack();

                  Turkey turkey = new WildTurkey();

                  turkey.gobble();

              }

          }

           

          interface Duck {

              public void quack();

              public void fly();

          }

           

          class MallardDuck implements Duck {

              public void quack() {

                  System.out.println("Mallard quacked");

              }

              public void fly() {

                  System.out.println("Mallard flying");

              }

          }

           

          interface Turkey {

              public void gobble();

              public void fly();

          }

           

          class WildTurkey implements Turkey {

              public void gobble() {

                  System.out.println("Wild gobbled");

              }

              public void fly() {

                  System.out.println("Wild flying");

              }

          }

           

           

          新增一個TurkeyAdapter類來完成轉換:

           

          package javaapplication31;

           

          public class Main {

              public static void main(String[] args) {

                  Duck duck = new MallardDuck();

                  duck.quack();

                 

                  Turkey turkey = new WildTurkey();

                  duck = new TurkeyAdapter(turkey);

                  duck.quack();

              }

          }

           

          interface Duck {

              public void quack();

              public void fly();

          }

           

          class MallardDuck implements Duck {

              public void quack() {

                  System.out.println("Mallard quacked");

              }

              public void fly() {

                  System.out.println("Mallard flying");

              }

          }

           

          class TurkeyAdapter implements Duck {

              Turkey turkey;

              TurkeyAdapter(Turkey turkey) {

                  this.turkey = turkey;

              }

              public void quack() {

                  turkey.gobble();

              }

              public void fly() {

                  turkey.fly();

              }

          }

           

          interface Turkey {

              public void gobble();

              public void fly();

          }

           

          class WildTurkey implements Turkey {

              public void gobble() {

                  System.out.println("Wild gobbled");

              }

              public void fly() {

                  System.out.println("Wild flying");

              }

          }

            

          看到這個Adapter,是否想到了Command Pattern中的“裝載器”呢?異曲同工之妙。

           

           

           

           

          posted on 2008-07-02 16:54 化的了 閱讀(1340) 評論(1)  編輯  收藏 所屬分類: 設計模式

          Feedback

          # re: 適配器模式 Adapter Pattern 2008-07-03 02:04 育平
          思路很清晰,我看明白并理解Adapter Pattern了,謝謝!  回復  更多評論
            

          主站蜘蛛池模板: 东乌珠穆沁旗| 全州县| 孝义市| 伊川县| 平和县| 浦江县| 襄城县| 齐河县| 元朗区| 新建县| 宾阳县| 福贡县| 拉孜县| 仪征市| 永安市| 十堰市| 山东省| 砀山县| 迁安市| 定西市| 新源县| 泽普县| 唐海县| 高陵县| 浠水县| 宁武县| 河间市| 富民县| 桓台县| 沽源县| 离岛区| 繁昌县| 昌吉市| 南京市| 江安县| 吉隆县| 临洮县| 屏东县| 康保县| 印江| 永济市|