<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    合工大很牛很牛牛

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      14 Posts :: 1 Stories :: 37 Comments :: 0 Trackbacks
     

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

     

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

    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");

        }

    }

     

     

    新增一個(gè)TurkeyAdapter類來(lái)完成轉(zhuǎn)換:

     

    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");

        }

    }

      

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

     

     

     

     

    posted on 2008-07-02 16:54 化的了 閱讀(1333) 評(píng)論(1)  編輯  收藏 所屬分類: 設(shè)計(jì)模式

    Feedback

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

    主站蜘蛛池模板: 午夜爱爱免费视频| 久久久久久国产精品免费无码| 国产高清免费视频| 78成人精品电影在线播放日韩精品电影一区亚洲 | 在线精品免费视频| 亚洲一本一道一区二区三区| 久久久久久国产精品免费免费| 亚洲啪啪免费视频| 成人免费无码大片A毛片抽搐 | 国产卡一卡二卡三免费入口| 亚洲国产超清无码专区| 国产在线观看片a免费观看| 亚洲av无码国产综合专区| 午夜一区二区免费视频| 国产成人高清亚洲一区91| 免费少妇a级毛片| 国产成人精品免费视频大全| 亚洲色婷婷六月亚洲婷婷6月| 九九美女网站免费| 亚洲精品韩国美女在线| 啦啦啦中文在线观看电视剧免费版| 亚洲精华国产精华精华液好用| 波多野结衣免费视频观看| 国产高潮久久免费观看| 777亚洲精品乱码久久久久久 | 美女免费视频一区二区| 亚洲精品乱码久久久久久蜜桃不卡| 免费视频一区二区| 亚洲国产成人久久77| 国产精品va无码免费麻豆| 国产真人无码作爱免费视频| 91亚洲国产成人久久精品网站| 99久久免费精品国产72精品九九| 精品久久久久亚洲| 亚洲毛片在线观看| 四虎免费大片aⅴ入口| 国产日韩一区二区三免费高清| 亚洲乱码一二三四五六区| 国产精品国产免费无码专区不卡| 成在人线av无码免费高潮喷水| 国产亚洲精品VA片在线播放|