适配器模式
定义
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
类适配器
作用
将一个类适配成我们需要的类
示例
Usb接口
public interface Usb {
public String getUsbName();
}
Usb实现类
public class UsbImpl implements Usb {
@Override
public String getUsbName() {
return "插上Usb";
}
}
Ps2接口
public interface Ps2 {
public String getPs2Name();
}
Ps2实现类
public class Ps2Impl implements Ps2 {
@Override
public String getPs2Name() {
return "插入Ps2";
}
}
电脑类
public class Computer {
public void plug(Usb usb){
System.out.println(usb.getUsbName());
}
}
类适配器
public class Ps2ToUsbAdapter extends Ps2Impl implements Usb {
@Override
public String getUsbName() {
return this.getPs2Name();
}
}
测试类
public class AdapterTest {
public static void main(String[] args) {
Computer computer = new Computer();
computer.plug(new Ps2ToUsbAdapter());
}
}
解析
电脑需要Usb接口,现在只有Ps2实现类,直接将Ps2实现类包装成Usb类
对象适配器
作用
将一个对象转换成我们需要的对象
示例
对象适配器
public class Ps2ToUsbAdapter1 implements Usb {
private Ps2 ps2;
public Ps2ToUsbAdapter1(Ps2 ps2){
this.ps2 = ps2;
}
@Override
public String getUsbName() {
return this.ps2.getPs2Name();
}
}
解析
代码跟类适配器类似,电脑还是需要Usb接口,将Ps2对象传入适配器,然后适配器将Ps2对象转换成Usb对象;
接口适配器
作用
将抽象类作为适配器实现接口中方法,从而使具体实现类只需要继承适配器重写具体的方法
示例
接口A有很多方法
public interface A {
public void a();
public void b();
public void c();
public void d();
public void e();
public void f();
}
抽象类实现接口
public abstract class Adapter implements A {
@Override
public void a() {
// TODO Auto-generated method stub
}
@Override
public void b() {
// TODO Auto-generated method stub
}
@Override
public void c() {
// TODO Auto-generated method stub
}
@Override
public void d() {
// TODO Auto-generated method stub
}
@Override
public void e() {
// TODO Auto-generated method stub
}
@Override
public void f() {
// TODO Auto-generated method stub
}
}
具体的B类中只需要实现若干个方法
public class B extends Adapter {
@Override
public void a() {
// TODO Auto-generated method stub
super.a();
}
@Override
public void b() {
// TODO Auto-generated method stub
super.b();
}
}