以手机充电的场景为例,写了个适配器的代码。
接口: 220V电源 Interface Charge220{}
手机的充电方法:void Charge(Charge220 c){
}
日常生活,我们可以直接获取220V电源,但是手机又不能用220V点压充电,所以我们需要一个充电器(适配器)
代码如下:
//我们只有220V的可以直接使用的电压
interface Charge220{
void charge();
}
//代表3V的电源,但我们直接获取不到
class V3 {
public void charge() {
System.out.println("charging with 3V");
}
}
//适配器,实现(接入)220v,持有3v对象,在充电方法中调用3v的充电
class VAdapter implements Charge220{
V3 v3 ;
public VAdapter(V3 v3) {
super();
this.v3 = v3;
}
@Override
public void charge() {
v3.charge();
}
}
public class Phone {
public Phone() {
super();
}
//手机的充电方法,能直接获取的只有220v的电,但我们肯定不能把手机直接接到220V电压的电线上
public void getE(Charge220 c) {
c.charge();
}
public static void main(String[] args) {
Phone p = new Phone();
VAdapter adapter = new VAdapter(new V3());
p.getE(adapter); //通过适配器给手机充电
}
}
运行程序:输出 charging with 3V
只是为了更好的理解适配器模式,所以以充电器充电为例写了个示例代码。
比喻可能有些不合理之处。