简介
适配器模式将原本不兼容的功能,使它们能够在一起工作,并得到自己需要的功能,好比如生活中电脑外接显示器的线与电脑的接口不匹配,此时就需要使用转接头来将显示器的线和电脑的接口进行适配。
适配器类别
1.类适配器
2.对象适配器
3.接口适配器
类适配器
类适配器是通过继承被适配的对象,并实现适配的对象的方法来实现的。
被适配的对象
public class Display {
public String vga(){
return "vga";
}
}
适配的对象
public interface Computer {
public void hdmi();
}
适配器
public class Adapter extends Display implements Computer{
public void hdmi() {
String result = super.vga();
result = "hdmi";
System.out.println(result);
}
}
外接显示器Display
只有vga
的线,但是电脑Computer
的接口是hdmi
的,在这种情况下电脑是不能使用外接的显示器的,如果要使用外接的显示器的话,就需要使用转接头(适配器),在适配器的hdmi
方法中将vga
转换为hdmi
,这样我们就可以使用外接的显示器了。
测试
public void Adapter(){
Adapter adapter = new Adapter();
adapter.hdmi();
}
对象适配器
对象适配器主要是在适配器类中不再继承被适配的对象,而是通过在创建适配器对象的时候传递被适配的对象的实例。
适配器
public class Adapter implements Computer{
private Display display;
public Adapter(Display display){
this.display = display;
}
public void hdmi() {
String result = display.vga();
result = "hdmi";
System.out.println(result);
}
}
对象适配器不再继承被适配的对象,这样的好处就是适配器可以适配多个对象,当需要适配多个的时候只需要定义一个接口,多个被适配的对象去实现接口的统一方法,并将适配器类中的构造方法的参数改成接口的名称,这样就可以适配多个对象。
测试
public void adapter(){
Adapter adapter = new Adapter(new Display());
adapter.hdmi();
}
接口适配器
接口适配器就是将适配器对象Adapter
设置为抽象类,而Adapter
类中的hdmi
方法可以根据自己的需求来决定是否需要编写具体的代码,也可以在创建适配器Adapter
对象的时候重写hdmi
方法。
适配器
public abstract class Adapter extends Display implements Computer{
public void hdmi() {
}
}
测试
public void adapter() {
Adapter adapter = new Adapter() {
public void hdmi() {
String result = super.vga();
result = "hdmi";
System.out.println(result);
}
};
adapter.hdmi();
}