定义
适配器模式把一个类的接口转换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法一起工作的的两个类能够在一起工作
使用场景
系统需要使用现有的类,而此类的接口不符合系统的需要,即接口不兼容
想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作
需要一个统一的输出接口,而输入端的类型不可预知
关键点
一个目标角色—所期待得到的接口
一个需要被转换的角色—需要适配的接口
适配器角色—把源接口转换成目标接口,不可以是接口,只能是类。
实现
以电压转换为例
/**
* 目标接口角色—需要的5伏电压
*/
public interface FiveVolt {
/**
* 需要5伏电压
*/
public int getVolt5();
}
/**
* 需要被转换角色
*/
public class Volt220 {
/**
* 对外输出的220电压接口
*/
public int getVolt220() {
return 220;
}
}
/**
* 适配器角色—将220伏电压转换成需要的5伏电压
*/
public class VoltAdapter implements FiveVolt {
private Volt220 volt220;
public VoltAdapter(Volt220 volt220) {
this.volt220 = volt220;
}
@Override
public int getVolt5() {
return 5;
}
}
使用
VoltAdapter adapter = new VoltAdapter(new Volt220());
adapter.getVolt5();
小结
优点
更好的复用性—系统需要现有的类,而此类的接口不符合系统的需要,通过适配器模式就可以让这些功能得到更好的复用性
更好的扩展性—在实现适配器功能的时候,可以调用自己剋发的功能,从而自然的扩展系统的功能
缺点
过多的使用适配器,会让系统非常凌乱,不易整体把握。