/**
* 源(Adaptee):需要被适配的对象或类型
* 实现功能:造车(白色宝马)
* 目标功能:改变汽车颜色
*/
public class CarFactoryImplBm implements CarFactory {
@Override
public Car createCar() {
Car car = new Car();
car.setName("宝马");
car.setColor("白色");
return car;
}
}
目标
/**
*目标(Target):期待得到的目标
* 期待实现的功能(改变汽车颜色)
*/
public interface CarDemand {
public Car changeColor(Car car);
}
适配器
/**
* 适配器(Adapter):连接目标和源的中间对象,相当于插头转换器。
* 1.通过继承方式实现造白色宝马车功能
* 2.通过实现目标功能,实现改变颜色功能
* 类适配器模式:
*/
public class CarAdapter extends CarFactoryImplBm implements CarDemand {
@Override
public Car changeColor(Car car) {
car.setColor("黑色");
return car;
}
}
/**
* 对象适配器
* 通过组合方式来实现适配器功能。
*/
public class CarObjectAdpter implements CarDemand {
CarFactoryImplBm carFactoryImplBm;
CarFactoryImplAd carFactoryImplAd;
public CarObjectAdpter(CarFactoryImplAd carFactoryImplAd,CarFactoryImplBm carFactoryImplBm){
carFactoryImplAd = carFactoryImplAd;
carFactoryImplBm = carFactoryImplBm;
}
public Car createCar(String carType){
Car car = null;
if ("bm".equals(carType)){
car = carFactoryImplBm.createCar();
}
if ("ad".equals(carType)){
car = carFactoryImplAd.createCar();
}
return car;
}
@Override
public Car changeColor(Car car) {
car.setColor("红色");
return car;
}
}