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

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

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

    合工大很牛很牛牛

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

    新舊兩個接口,功能類似,舊的接口已漸漸不再使用,如何讓舊接口調整為新接口的樣式呢(方便其他程序調用)?寫一個銜接作用的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 化的了 閱讀(1334) 評論(1)  編輯  收藏 所屬分類: 設計模式

    Feedback

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

    主站蜘蛛池模板: 日韩视频在线免费| 亚洲欧洲日产国码无码网站| 美女一级毛片免费观看| 日本亚洲欧洲免费天堂午夜看片女人员| 97青青草原国产免费观看| 亚洲精品无码专区| 亚洲乱色熟女一区二区三区丝袜| 免费阿v网站在线观看g| 一级毛片一级毛片免费毛片 | 国产亚洲AV无码AV男人的天堂| **俄罗斯毛片免费| 成人免费视频一区二区| 亚洲毛片免费视频| 亚洲毛片av日韩av无码| 中文字幕免费在线看线人| 人妻免费久久久久久久了| 亚洲国产成人超福利久久精品| 久久亚洲国产精品123区| 女人与禽交视频免费看| 99久在线国内在线播放免费观看 | 久久成人免费电影| 另类图片亚洲校园小说区| 亚洲视频一区在线观看| 国产成人精品日本亚洲专区 | 久久亚洲国产精品123区| 成人在线视频免费| 18禁无遮挡无码国产免费网站| 一区二区3区免费视频| 亚洲私人无码综合久久网| 97久久精品亚洲中文字幕无码| 亚洲人成无码网WWW| 日本二区免费一片黄2019| 黄色成人免费网站| 久久99毛片免费观看不卡| 添bbb免费观看高清视频| 亚洲国产日韩综合久久精品| 久久亚洲精品无码VA大香大香| 激情综合色五月丁香六月亚洲| 免费国产在线观看不卡| 日韩毛片免费在线观看| 毛片免费观看网站|