定义
将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。
比如笔记本的电源(也叫电源适配器)就使用了适配器模式。将220V的交流电转换为笔记本电脑所需要的12V
适配器模式角色
适配器模式包含以下三个角色:
Target(目标抽象类):目标抽象类定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类。
Adapter(适配器类):它可以调用另一个接口,作为一个转换器,对 Adaptee 和 Target 进行适配。它是适配器模式的核心。
Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类包好了客户希望的业务方法。
适用场景
系统需要使用现有的类,但现有的类却不兼容。
需要建立一个可以重复使用的类,用于一些彼此关系不大的类,并易于扩展,以便于面对将来会出现的类。
需要一个统一的输出接口,但是输入类型却不可预知。
实例
以电源适配器为例
/**
* 220V 电压对象
*/
public class AC220 {
public int output220V(){
return 220;
}
}
/**
* 5V 电压输出接口
*/
public interface DC5 {
int output5V();
}
适配器对象
public class PowerAdapter implements DC5 {
private AC220 ac220;
public PowerAdapter(AC220 ac220) {
this.ac220 = ac220;
}
@Override
public int output5V() {
if (this.ac220 != null) {
return (ac220.output220V() / 44);
}
return 0;
}
}
调用:
public static void main(String[] args) {
PowerAdapter powerAdapter = new PowerAdapter(new AC220());
System.out.println(powerAdapter.output5V());
}
控制台输出:
5