java适配器(Adapter)
1. 概念
适配器模式把一个类的接口转换成客户端期待的另外一种接口, 从而是原本应用接口不匹配而无法在一起工作的两个类能够在一起工作.
举个例子来说,现在一般的家用电器要求的电压都是 220V,但有个别电器要求使用110V 电压,怎么办?这时就需要用一个能把 220V 电压转换成 110V 电压的变压器,这个变压器就是一个适配器。
2. 哪些情况需要适配器模式?
- 系统需要使用类的接口不符合系统的要求
- 要建立一个可以重复使用的类, 用于与该类之间的关联不大的一些类, 包括工作中引用的类
- 类的适配器模式使用起来有点像多重集成机制, 利用接口的特性, 把一些零散类组织到一起, 成为一个新的类来实现调用, 并且看起来像是对一个类的操作. 实际上, 适配器模式更过的是强调对代码的组织, 而不是功能的实
3. 适配器的作用
系统需要使用现有的类,而这些类的接口不符合系统的接口
4. 适配器的角色
Target: 目标接口类, 客户所期待的接口, 目标可以是具体的或者抽象的类, 也可以是接口
Adaptee: 需要适配的类
Adapter: 通过包装一个需要的支配器对象, 把原来的接口转换成目标接口
5. 适配器的实现方式
对象适配器模式(采用对象组合方式实现)
有一个220V的电源,它的目的是充电
public interface Power220V {
// 充电
void doCharge220V();
}
手机类接受这个电源进行充电,但是手机不能直接用220V电源,只能充5V的电源
public class Phone {
// 手机只能接受5V电源
public void doCharge(Power220V power220V) {
power220V.doCharge220V();
}
}
5v电源类
public class Power5V {
public void doCharge5V() {
System.out.println("5V充电");
}
}
手机接受一个220V的电源,但最终要转化成5V电源,所以就需要一个适配器,这个适配器实现Power220V接口,并组合Power5V,这样子实际调用的就是power5V的充电方法
public class Adapter implements Power220V{
private Power5V power5V;
public Adapter(Power5V power5V) {
this.power5V = power5V;
}
@Override
public void doCharge220V() {
power5V.doCharge5V();
}
}
调用语句,最终实现了利用适配器进行5V充电
Phone phone = new Phone();
phone.doCharge(new Adapter(new Power5V()));