yuyee

          適配器

          適配器模式:將一個現(xiàn)有類實現(xiàn)的功能接口轉(zhuǎn)變?yōu)榭蛻粝M慕涌?/span>

          場景:你想使用一個已經(jīng)存在的類,但是這個類的接口不符合需求,所以需要適配

          2中實現(xiàn):一種是繼承,一種是委托,先來看看繼承

             

          第一步:系統(tǒng)現(xiàn)有功能

          package com.google.desginpattern.adapter;
          /**
           * 現(xiàn)有系統(tǒng)提供的功能
           * 
           * 
          @author Administrator
           * 
           
          */
          public class BMWCar {
          public void quickDriver() {
          System.out.println(
          "寶馬太快");
          }
          }

           

          第二步:客戶需要的接口

          package com.google.desginpattern.adapter;
          /**
           * 客戶需要的接口
           * 
          @author Administrator
           *
           
          */
          public interface Car {
          public void driver();
          public void brake();
          }

           

          第三步:實現(xiàn)客戶需要的功能

          package com.google.desginpattern.adapter;
          /**
           * 匹配客戶需求的實現(xiàn)
           * 
          @author Administrator
           *
           
          */
          public class CarAdapter extends BMWCar implements Car {
          @Override
          public void brake() {
          System.out.println(
          "剎車");
          }
          @Override
          public void driver() {
          quickDriver();
          }
          }

           

          測試類:

           

          package com.google.desginpattern.adapter;


          public class Test {

          public static void main(String[] args) {


          Car car 
          = new CarAdapter();

          car.brake();

          car.driver();

          }


          }

          輸出:

          剎車

          寶馬太快

          如果是委托的方式,改寫adapter

          package com.google.desginpattern.adapter;
          /**
           * 匹配客戶需求的實現(xiàn)
           * 
           * 
          @author Administrator
           * 
           
          */
          public class CarAdapter implements Car {
          private BMWCar car;
          @Override
          public void brake() {
          System.out.println(
          "剎車");
          }
          @Override
          public void driver() {
          car.quickDriver();
          }
          public BMWCar getCar() {
          return car;
          }
          public void setCar(BMWCar car) {
          this.car = car;
          }
          }

           

          posted on 2010-11-29 22:28 羔羊 閱讀(134) 評論(0)  編輯  收藏 所屬分類: desginpattern

          主站蜘蛛池模板: 宜都市| 资中县| 巴里| 镇安县| 巫溪县| 英山县| 喀喇沁旗| 神木县| 辽阳市| 福海县| 营口市| 忻州市| 平邑县| 六枝特区| 正镶白旗| 吉木乃县| 特克斯县| 民丰县| 裕民县| 海丰县| 灵川县| 中牟县| 延津县| 塘沽区| 巧家县| 海丰县| 巴彦淖尔市| 穆棱市| 富蕴县| 饶河县| 揭东县| 南和县| 沙洋县| 乐至县| 龙泉市| 封丘县| 泰宁县| 武宣县| 麟游县| 纳雍县| 四川省|