适配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。
我们通过下面的实例来演示适配器模式的使用。其中,音频播放器设备只能播放 mp3 文件,通过使用一个更高级的音频播放器来播放 mp4 文件。
适配器同时也保证了我们拓展代码的同时不会去修改到以前的代码。
那么我们来实现这样一个功能
首先定义一个播放器
public interface Player {
void playMP3();
}
播放器的实现
public class MP3Player implements Player {
@Override
public void playMP3() {
System.out.println("我可以播放MP3");
}
}
现在我需要升级我的设备,但是这里是之前早就写好的代码,我并不想去动这样一个接口,因为可能实现这个接口的类有很多,这样修改起来就会可能出问题
那么这时候我们重新定义一个升级的播放器可以播放mp4也可以播放mp3
public interface UpgradePlayer {
void playMP4();
}
编写实现
public class MP3PlayerAdapter extends MP3Player implements UpgradePlayer{
@Override
public void playMP4() {
playMP3();
System.out.println("我可以播放MP4");
}
}
测试
public class Test {
public static void main(String[] args) {
MP3PlayerAdapter mp3PlayerAdapter = new MP3PlayerAdapter();
mp3PlayerAdapter.playMP4();
}
}
结果
我可以播放MP3
我可以播放MP4
这样我们很好的保证了在不更改之前代码的情况下进行拓展