概念
适配器即把原本不兼容的接口连接在一起,使其可以正常使用的工具
适配器模式的作用就是将现有的一种接口,转换成所另一种所需的接口,使得原本由于接口不兼容而不能一起工作的类可以正常工作
例子
现在很多手机为了获得更好的防水性能,都取消了原本的3.5mm的耳机孔,让我们原本的耳机变得没有用武之地。为了弥补这个不便,手机厂商都会附赠一个转接器,让我们的耳机可以通过转接器连接到充电孔,这样就可以正常使用耳机了。
这就是一个典型的适配器模式,我们现有的接口是一个充电接口,所需的接口是耳机接口,两者并不兼容,而转接器就是一个适配器,让耳机能够使用充电接口正常工作。
代码示例
//充电接口是已有的,所以是具体的类
class ChargePlug
{
public void insertChargePlug(){
System.out.println("使用了充电接口");
}
}
//没有耳机接口,创建抽象的接口
interface EarphoneInterface
{
void insetEarphonePlug();
}
//适配器类,因为是要转化为耳机接口,所以在此实现耳机接口的方法
class Adapter implements EarphoneInterface
{
private ChargePlug cp;
//使用适配器需要传入一个充电接口
public Adapter(ChargePlug cp){
this.cp = cp;
}
//耳机接口的方法
@Override
void insertEarphonePlug(){
System.out.println("没有耳机接口,使用充电接口");
//在此转化为使用充电接口的方法
cp.insertChargePlug();
}
}
//示例,使用耳机播放音乐
class PlayMusicWithEarphone {
public static void main(String[] args) {
//已有充电接口,直接实例化一个充电接口对象
ChargePlug chargePlug = new ChargePlug();
//通过适配器转化为耳机接口
EarphoneInterface ei = new Adapter(chargePlug);
//使用转化后的耳机接口
PlayMusicWithEarphone demo = new PlayMusicWithEarphone();
demo.insert(ei);
demo.play();
}
//插入耳机,需要提供耳机接口
private void insert(EarphoneInterface ei) {
ei.insetEarphonePlug();
}
private void play() {
System.out.println("播放音乐");
}
}
运行结果:
如代码所示,通过适配器,没有耳机插孔,我们也能够使用耳机来听音乐了~