创建接口,音频媒体播放器,只能播放mp3文件
/**
* 音频媒体播放器,只能播放mp3文件
*/
public interface MediaPlayer {
public void play(String audioType,String fileName);
}
高级音频播放器接口,可以播放多种格式
/**
* 高级音频媒体播放器,可以播放mp3,mp4,vlc等其他音频文件
*/
public interface AdvancedMediaPlayer {
public void playVlc(String fileName);
public void playMp4(String fileName);
}
创建高级音频的实现类
/**
* 创建实现了 AdvancedMediaPlayer 接口的实体类vlc实现类。
*/
public class VlcPlayer implements AdvancedMediaPlayer {
@Override
public void playVlc(String fileName) {
System.out.println("vlc:"+fileName);
}
@Override
public void playMp4(String fileName) {
//什么也不做
}
}
/**
* 创建实现了 AdvancedMediaPlayer 接口的实体类。mp4实现类
*/
public class Mp4Player implements AdvancedMediaPlayer {
@Override
public void playVlc(String fileName) {
//实现类
}
@Override
public void playMp4(String fileName) {
System.out.println("mp4:"+fileName);
}
}
适配器类,实现高级音频接口,相当于一个驱动
/**
* 创建实现了 MediaPlayer 接口的适配器类。
*/
public class MediaAdapter implements MediaPlayer {
AdvancedMediaPlayer advancedMediaPlayer;
public MediaAdapter(String audioType){
if (audioType.equalsIgnoreCase("vlc")){
advancedMediaPlayer=new VlcPlayer();
}else if (audioType.equalsIgnoreCase("mp4")){
advancedMediaPlayer=new Mp4Player();
}
}
@Override
public void play(String audioType, String fileName) {
if (audioType.equalsIgnoreCase("vlc")){
advancedMediaPlayer.playVlc(fileName);
}else if (audioType.equalsIgnoreCase("mp4")){
advancedMediaPlayer.playMp4(fileName);
}
}
}
最后就是普通播放器的实现类,导入驱动就可以兼容其他的格式了
/**
* 创建实现了 MediaPlayer接口的实现类。
* 相当于这里装了一个驱动,就是可以播放其他格式视频的驱动,使得自己可以兼容其他格式
*/
public class MediaPlayerImpl implements MediaPlayer {
MediaAdapter mediaAdapter;
@Override
public void play(String audioType, String fileName) {
//播放mp3音乐文件的内置支持
if (audioType.equalsIgnoreCase("mp3")){
System.out.println("mp3:"+fileName);
}else if(audioType.equalsIgnoreCase("vlc")||audioType.equalsIgnoreCase("mp4")){
//mediaAdapter提供了播放器其他文件格式的支持
mediaAdapter=new MediaAdapter(audioType);
mediaAdapter.play(audioType,fileName);
}else {
System.out.println(audioType+"格式不支持");
}
}
}