適配器
適配器模式:將一個現有類實現的功能接口轉變為客戶希望的接口
場景:你想使用一個已經存在的類,但是這個類的接口不符合需求,所以需要適配
有2中實現:一種是繼承,一種是委托,先來看看繼承
第一步:系統現有功能
package com.google.desginpattern.adapter;
/**
* 現有系統提供的功能
*
* @author Administrator
*
*/
public class BMWCar {
public void quickDriver() {
System.out.println("寶馬太快");
}
}
/**
* 現有系統提供的功能
*
* @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();
}
第三步:實現客戶需要的功能
package com.google.desginpattern.adapter;
/**
* 匹配客戶需求的實現
* @author Administrator
*
*/
public class CarAdapter extends BMWCar implements Car {
@Override
public void brake() {
System.out.println("剎車");
}
@Override
public void driver() {
quickDriver();
}
}
/**
* 匹配客戶需求的實現
* @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;
/**
* 匹配客戶需求的實現
*
* @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;
}
}
/**
* 匹配客戶需求的實現
*
* @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 @ 2010-11-29 22:28 羔羊| 編輯 收藏