适配器模式分3种
- 类适配
- 对象适配
- 接口适配
1.类适配
对象适配就是要继承一个实例化对象
Usb接口:
public interface Usb {
void isUsb();
}
Usb接口实现类:
public class Usber implements Usb {
@Override
public void isUsb() {
System.out.println("USB口");
}
}
Ps2接口:
public interface Ps2 {
void isPs2();
}
类适配器,Adapter1 继承Usb接口的实现类Usber。因此Adapter1 就有USB口的功能,在实现Ps2接口,在接口isPs2里面调用Usber的方法isUsb,成功的把Ps2实现类适配有Usb实现的功能
public class Adapter1 extends Usber implements Ps2 {
@Override
public void isPs2() {
isUsb();
}
public static void main(String[] args) {
Adapter1 adapter = new Adapter1();
adapter.isPs2();
}
}
2.对象适配
对象适配就是在成员变量里面有另一个类对象的引用
对象适配就是在成员变量里面有Usber对象的引用,然后在相应的地方实现适配功能
public class Adapter2 implements Ps2 {
private Usber mUsber;
public Adapter2(Usber usber) {
mUsber = usber;
}
@Override
public void isPs2() {
mUsber.isUsb();
}
public static void main(String[] args) {
Adapter2 adapter = new Adapter2(new Usber());
adapter.isPs2();
}
}
3.接口适配
避免一个类在实现一个接口类时,去实现不必要的接口方法
比如这是一个接口类,我在实现这个接口类时,是不是要实现方法a、b、c,然后其中b、c我压根就不需要,这样就会让代码很难看,这个时候就可以用到接口适配
public interface interfaces {
void a();
void b();
void c();
}
写一个适配器就实现interfaces接口,方法a、b、c空着就行
public abstract class Adapter3 implements interfaces {
@Override
public void a() {
}
@Override
public void b() {
}
@Override
public void c() {
}
}
然后去集成适配器Adapter3,这个时候我想用哪个方法就重写该方法就行,这样看起来代码就清晰多了,避免了多余的方法
public class A1 extends Adapter3 {
@Override
public void a() {
System.out.println("a");
}
}