適配器
適配器模式:將一個現(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("寶馬太快");
}
}
/**
* 現(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();
}
/**
* 客戶需要的接口
* @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();
}
}
/**
* 匹配客戶需求的實現(xiàn)
* @author Administrator
*
*/
public class CarAdapter extends BMWCar implements Car {
@Override
public void brake() {
System.out.println("剎車");
}
@Override
public void driver() {
quickDriver();
}
}
測試類:


















輸出:
剎車
寶馬太快
如果是委托的方式,改寫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;
}
}
/**
* 匹配客戶需求的實現(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