接口AdvancedMediaPlayer
package adapter; /** * @description 被实现的接口,可以实现两种播放格式 * @author wxy */ public interface AdvancedMediaPlayer { public void playVLC(String FileName); public void playMP4(String FileName); }媒体播放器接口
package adapter; /** * @author wxy * @description 媒体播放器接口 */ public interface MediaPlayer { public void play(String type,String FileName); }Mp4Player类 实现了AdvancedMediaPlayer
public class Mp4Player implements AdvancedMediaPlayer{ @Override public void playVLC(String FileName) { } @Override public void playMP4(String FileName) { System.out.println("这是"+FileName+"播放器"); } }VlcPlayer 类 实现了AdvancedMediaPlayer
public class VlcPlayer implements AdvancedMediaPlayer{ @Override public void playVLC(String FileName) { System.out.println("这是"+FileName+"播放器"); } @Override public void playMP4(String FileName) { } }适配器
public class AdapterPlayer implements MediaPlayer{ /** 构造器实现 需要什么类型的播放器**/ AdvancedMediaPlayer advancedMediaPlayer; public AdapterPlayer(String type){ if (type.equalsIgnoreCase("Vlc")){ advancedMediaPlayer = new VlcPlayer(); // advancedMediaPlayer.playVLC(FileName); }else if("MP4".equalsIgnoreCase(type)){ advancedMediaPlayer = new Mp4Player(); //advancedMediaPlayer.playMP4(FileName); }else{ advancedMediaPlayer = null; } } @Override public void play(String audioType,String FileName) { if(audioType.equalsIgnoreCase("vlc")){ advancedMediaPlayer.playVLC(FileName); }else if(audioType.equalsIgnoreCase("mp4")){ advancedMediaPlayer.playMP4(FileName); } } }调用适配器AdapterPlayer
package adapter; /** * @author wxy * @description 调用适配器AdapterPlayer * @data 2020/7/2 */ public class AudioPlayer implements MediaPlayer{ AdapterPlayer adapterPlayer; @Override public void play(String audioType, String fileName) { //播放 mp3 音乐文件的内置支持 if(audioType.equalsIgnoreCase("mp3")){ System.out.println("Playing mp3 file. Name: "+ fileName); } //mediaAdapter 提供了播放其他文件格式的支持 else if(audioType.equalsIgnoreCase("vlc") || audioType.equalsIgnoreCase("mp4")){ adapterPlayer = new AdapterPlayer(audioType); adapterPlayer.play(audioType, fileName); } else{ System.out.println("Invalid media. "+ audioType + " format not supported"); } } }适配器模式-播放器格式问题
/** * @author wxy * @description 适配器模式-播放器格式问题 * @data 2020/7/2 */ public class AdapterPatternDemo { public static void main(String[] args) { AudioPlayer audioPlayer = new AudioPlayer(); audioPlayer.play("mp3", "这是mp3播放器"); audioPlayer.play("mp4", "alone.mp4"); audioPlayer.play("vlc", "away.vlc"); audioPlayer.play("avi", "这是avi播放器"); } }