介绍
将某个类的接口转换成期望的另一个接口表示,目的是兼容,让原本因接口不匹配不能一起工作的两个类可以协同工作
主要分为:类适配器、对象适配器、接口适配器
定义src类为被适配的类,dst为目标
类适配器模式
适配器需要继承src。dst必须是接口
如生活电压电压220v,我们期望使用5v的。
public class Voltage220 {
public int outPut220V(){
int size = 220;
System.out.printf("输出了220V");
return size;
}
}
定义5v的接口
public interface iVoltage5 {
public int outPut5V();
}
让适配器继承220v,实现5v
public class Adapter extends Voltage220 implements iVoltage5{
@Override
public int outPut5V() {
int size = outPut220V();
System.out.printf("降压");
size = 5;
return size;
}
}
对象适配器
不继承src,而改为持有。实现dst接口
public class Adapter2 implements iVoltage5{
private Voltage220 voltage220;
public Adapter2(Voltage220 voltage220) {
this.voltage220 = voltage220;
}
@Override
public int outPut5V() {
int size = voltage220.outPut220V();
System.out.printf("降压");
size = 5;
return size;
}
}
接口适配器模式
又称缺省适配器
但不需要全部实现接口的全部方法时,可以设计一个抽象类实现接口,并为接口某个方法提供一个默认实现(空方法),该抽象类子类可以选择性覆盖一部分方法来实现需求。
public interface iManyFunction {
public void m1();
public void m2();
public void m3();
public void m4();
}
public abstract class absMany implements iManyFunction{
@Override
public void m1() {
}
@Override
public void m2() {
}
@Override
public void m3() {
}
@Override
public void m4() {
}
}
public static void main(String[] args) {
absMany a = new absMany() {
@Override
public void m1() {
System.out.printf("实现m1");
}
};
a.m1();
}