什么是适配器模式?
试想下,你手上的IPhone充电线隔三差五的坏掉,但刚好有好几条耐用的Android通用USB线,这时候你可能会上淘宝买10块钱5个的Lightening转接头,插到普通USB线上来给IPhone继续充电,这就是显示生活中适配器的应用。(当然,这样可能会损坏IPhone)
另外一个常见的例子就是旅行充电转换器,适配器模式将电器插头转换成插座的规格,当然,最终也要电器本身与当地的供电电压符合才可以正常工作。
而在日常工作中,适配器模式用于将我们系统中对应的的功能接口适配成客户所需要的api。
一般适配模式的类图如下:
例子
现在来实现一个普通usb线转lightening的转换头。
- 这是普通Usb线:
public class UsbCable implements GenerateChargeCable{
@Override
public void charge() {
System.out.println("Charging...");
//do stuff
}
}
- 这是Lightening线的接口:
public interface Lightening {
void chargeIphone();
}
- 实现一个普通Usb转Lightening的接口:
public class UsbToLighteningAdapter implements Lightening {
UsbCable mCable;//普通usb线实例
public UsbToLighteningAdapter(UsbCable cable) {
System.out.println("Set adapter...");
mCable = cable;
}
@Override
public void chargeIphone() { //充IPhone的时候用普通usb线的充电行为代替
System.out.println("Charging Iphone...");
mCable.charge();
}
}
4.万事具备,现在使用转接头为IPhone充电:
public class Client {
public static void main(String[] args) {
//创建通用usb线的实例
UsbCable myCable = new UsbCable();
//创建一个adapter,将通用线转成Lightening接口
Lightening lighteningCable = new UsbToLighteningAdapter(myCable);
//开始充电
lighteningCable.chargeIphone();
}
}
输出:
Set adapter...
Charging Iphone...
Charging...