
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");
  }
}
