1.概述
在编程中,每个程序员都可能会遇到这样的问题:方法a()需要A类型的参数,然而我想让B类型的对象作为方法a()的参数进行传递并调用B中定义的方法,A,B两个类型完全不兼容,如何实现这个需求呢?这时就需要适配器出场了。
2.定义
适配器模式,是指将一个接口类型转化为另一个接口类型,从而可以让原本不兼容的类可以合作无间。
3.使用场景
当方法参数和现有实参类型不匹配时,需要创建适配器进行接口类型的转换。
4.UML图
适配器模式可以又可以分为两种:对象适配器和类适配器。
- 对象适配器:使用对象组合的方式,以修改的接口包装被适配者。其UML图如下:
- 类适配器:以类多继承的方式,以一个接口来适配另一个接口。由于使用多继承,因此这种适配器不适用于java。其UML图如下:
5.示例
5.1.对象适配器的用法
有两种充电器,分别用于给IPhone设备和Android设备充电:
/**
* Android 充电器
*
*/
public class AndroidCharger {
public void chargeForAndroid() {
System.out.println("Charging By AndroidCharger start...");
}
}
/**
* IPhone充电器
*/
class AppleCharger {
public void chargeForIPhone() {
System.out.println("Charged By AppleCharger start...");
}
}
/**
* IPhone手机实体类
*
*/
class IPhone {
private AppleCharger mCharger;
public void setCharger(AppleCharger mCharger) {
this.mCharger = mCharger;
}
public void plug() {
if (mCharger != null)
mCharger.chargeForIPhone();
}
}
/**
* Android实体类
*/
class Android {
private AndroidCharger mCharger;
public void setCharger(AndroidCharger mCharger) {
this.mCharger = mCharger;
}
public void plug