
1、MediaPlayer.java
package com.ssm.cts.pattern.adapter;
public interface MediaPlayer {
public void play(String audioType, String fileName);
}
2、MediaAdapter.java
package com.ssm.cts.pattern.adapter;
public class MediaAdapter implements MediaPlayer {
AdvancedMediaPlayer advancedMusicPlayer;
public MediaAdapter(String audioType) {
if (audioType.equalsIgnoreCase("vlc")) {
advancedMusicPlayer = new VlcPlayer();
} else if (audioType.equalsIgnoreCase("mp4")) {
advancedMusicPlayer = new Mp4Player();
}
}
@Override
public void play(String audioType, String fileName) {
if (audioType.equalsIgnoreCase("vlc")) {
advancedMusicPlayer.playVlc(fileName);
} else if (audioType.equalsIgnoreCase("mp4")) {
advancedMusicPlayer.playMp4(fileName);
}
}
}
3、AudioPlayer.java
package com.ssm.cts.pattern.adapter;
public class AudioPlayer implements MediaPlayer {
MediaAdapter mediaAdapter;
@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")) {
mediaAdapter = new MediaAdapter(audioType);
mediaAdapter.play(audioType, fileName);
} else {
System.out.println("错误的文件格式. " + audioType + " format not supported");
}
}
}
4、AdvancedMediaPlayer.java
package com.ssm.cts.pattern.adapter;
public interface AdvancedMediaPlayer {
public void playVlc(String fileName);
public void playMp4(String fileName);
}
5、Mp4Player.java
package com.ssm.cts.pattern.adapter;
public class Mp4Player implements AdvancedMediaPlayer {
@Override
public void playVlc(String fileName) {
// TODO Auto-generated method stub
}
@Override
public void playMp4(String fileName) {
System.out.println("Playing mp4 file. Name: "+ fileName);
}
}
6、VlcPlayer.java
package com.ssm.cts.pattern.adapter;
public class VlcPlayer implements AdvancedMediaPlayer {
@Override
public void playVlc(String fileName) {
System.out.println("Playing vlc file. Name: "+ fileName);
}
@Override
public void playMp4(String fileName) {
// TODO Auto-generated method stub
}
}
7、Demo.java
package com.ssm.cts.pattern.adapter;
public class Demo {
// 测试
public static void main(String[] args) {
AudioPlayer audioPlayer = new AudioPlayer();
audioPlayer.play("mp3", "1.mp3");
audioPlayer.play("mp4", "2.mp4");
audioPlayer.play("vlc", "3.vlc");
audioPlayer.play("avi", "4.avi");
}
}