城市獵人

          在一網情深的日子里,誰能說得清是苦是甜,只知道確定了就義無反顧
          posts - 1, comments - 7, trackbacks - 0, articles - 89

          模式(七):適配器(Adapter)模式

          Posted on 2008-07-25 09:17 sailor 閱讀(148) 評論(0)  編輯  收藏 所屬分類: 模式

          定義
              將一個類的接口,轉換成客戶期望的另一個接口。適配器讓原本不兼容的類可以合作無間。

              類適配器可以分為類適配器和對象適配器

          adapter.bmp
          實用性
              當需要私用一個現有的類而其接口并不符合你需要的時,就使用適配器;

              適配器改變接口以符合用戶的期望;

          實例




           1package com.sailor.adapter;
           2
           3
           4/**
           5 * 被適配者
           6 * @author sailor
           7 * Jul 25, 2008 9:35:19 AM
           8 */

           9public class Duck {
          10    
          11    public Duck() {
          12
          13    }

          14
          15    public void fly(){
          16        System.out.println("I can fly");
          17    }

          18    
          19    public void quack(){
          20        System.out.println("quake!");
          21    }

          22}

          23


           

           1
           2package com.sailor.adapter;
           3
           4/**
           5 * 目標接口
           6 * @author sailor
           7 * Jul 25, 2008 9:43:35 AM
           8 */

           9public interface Turkey {
          10
          11    public void gobble();
          12    public void fly();
          13}

          14


           

           1
           2package com.sailor.adapter;
           3
           4/**
           5 * 適配器
           6 * @author sailor
           7 * Jul 25, 2008 9:38:10 AM
           8 */

           9public class TurkeyAdapter implements Turkey{
          10
          11    private Duck duck;
          12
          13    public TurkeyAdapter(Duck duck) {
          14        this.duck = duck;
          15    }

          16    
          17    public void gobble(){
          18        duck.quack();
          19    }

          20    
          21    public void fly(){
          22        duck.fly();
          23    }

          24    
          25    
          26}

          27


           

           1
           2package com.sailor.adapter;
           3
           4/**
           5 * 客戶端
           6 * @author sailor
           7 * Jul 25, 2008 9:45:29 AM
           8 */

           9public class Client {
          10
          11    /**
          12     * @param args
          13     */

          14    public static void main(String[] args) {
          15        
          16        Duck duck = new Duck();
          17        
          18        Turkey turkey = new TurkeyAdapter(duck);
          19        
          20        turkey.gobble();
          21        turkey.fly();
          22    }

          23
          24}

          25


              參考資料:《First Head 設計模式》

          主站蜘蛛池模板: 杭锦后旗| 广河县| 宣化县| 阳谷县| 莱州市| 肇东市| 兴业县| 寿阳县| 宿迁市| 九江县| 浦北县| 隆回县| 通海县| 深水埗区| 房产| 宜君县| 昂仁县| 巴南区| 汉源县| 滁州市| 通化县| 隆林| 大方县| 保山市| 庄河市| 广河县| 定安县| 濉溪县| 澎湖县| 肇庆市| 天祝| 繁峙县| 泸州市| 安康市| 克山县| 阳山县| 柘城县| 那曲县| 荥经县| 玉溪市| 丰顺县|