介绍
适配器模式 是 作为两个不兼容的接口之间的桥梁 ,它结合了两个接口的功能。
使用场景列举
1、笔记本电脑 不支持 直接插入内存卡,需要使用读卡器,读卡器就是 笔记本和内存卡之前的适配器(读卡器实现了笔记本的接口,也依赖了内存卡的读写接口)
示例代码
public class AdapterPatternDemo2{
public static void main(String[] args) {
mp3播放器 mp3 = new mp3播放器();
mp3.play("mp3","我爱你,祖国");
mp3.play("mp4","我要飞的更高");
mp3.play("mp5","猪也要起飞");
}
public interface MP3播放接口 {
void play(String type,String fileName);
}
public static class mp3播放器 implements MP3播放接口 {
MP4AndMP5适配器 适配器 = new MP4AndMP5适配器();
@Override
public void play(String type,String fileName){
if("mp3".equals(type)){
System.out.println("正在通过内置播放器播放MP3文件:" + fileName);
}else if("mp4".equals(type) || "mp5".equals(type)){
适配器.play(type,fileName);
}
}
}
/**
*
*/
public static class MP4AndMP5适配器 implements MP3播放接口 {
高级播放器接口 gao;
@Override
public void play(String type,String fileName){
if("mp4".equals(type)){
gao = new MP4播放器();
gao.playMp4(fileName);
}else if("mp5".equals(type)){
gao = new MP5播放器();
gao.playMP5(fileName);
}
}
}
public interface 高级播放器接口 {
void playMp4(String fileNmae);
void playMP5(String fileName);
}
public static class MP4播放器 implements 高级播放器接口 {
@Override
public void playMp4(String fileNmae){
System.out.println("正在使用高级播放器播放MP4文件:" + fileNmae);
}
@Override
public void playMP5(String fileName){}
}
public static class MP5播放器 implements 高级播放器接口 {
@Override
public void playMp4(String fileNmae){}
@Override
public void playMP5(String fileName){
System.out.println("正在使用高级播放器播放MP5文件:" + fileName);
}
}
}