适配器模式:将一个现有类实现的功能接口转变为客户希望的接口
场景:你想使用一个已经存在的类,但是这个类的接口不符合需求,所以需要适配
有2中实现:一种是继承,一种是委托,先来看看继承
第一步:系统现有功能
package com.google.desginpattern.adapter;
/**
* 现有系统提供的功能
*
* @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();
}
第三步:实现客户需要的功能
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();
}
}
测试类:
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;
/**
* 匹配客户需求的实现
*
* @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;
}
}