将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
当你希望使用某些现有类,但其他接口与你的其他代码不兼容时,请使用适配器模式
当你希望重用几个现有的子类,这些子类缺少一些不能添加到超类中的公共功能时,请使用适配器模式
符合单一指责原则
符合开闭原则
package v1;
/**
* 对象适配器模式
* 需求:
* 将家用220v电压转换成手机能使用的5v电压
*/
class Adaptee{
private int output220v;
public int output220v(){
return 220;
}
}
interface Target{
int output5v();
}
class Adapter implements Target{
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public int output5v() {
int i = adaptee.output220v();
// ....
System.out.println(String.format("原始电压:%d -> %d",i,5));
return 5;
}
}
package v2;
/**
* 类的适配器模式
*/
class Adaptee{
private int output220v;
public int output220v(){
return 220;
}
}
//目标电压接口
interface Target{
int output5v();
}
class Adpater extends Adaptee implements Target{
@Override
public int output5v() {
int i = output220v();
System.out.println(String.format("原始电压:%d -> %d",i,5));
return 5;
}
}