MediaPlayer.java
public interface MediaPlayer {
public void playMP3File(String fileName);
}
AdvancedMediaPlayer.java
public interface AdvancedMediaPlayer {
public void playVLCFile(String fileName);
public void playMP4File(String fileName);
}
WindowsMP3Player.java
public class WindowsMP3Player implements MediaPlayer {
public WindowsMP3Player() {
// TODO Auto-generated constructor stub
}
@Override
public void playMP3File(String fileName) {
// TODO Auto-generated method stub
System.out.println("playing mp3 file::"+fileName);
}
}
VLCAdvancedMediaPlayer.java
public class VLCAdvancedMediaPlayer implements AdvancedMediaPlayer {
public VLCAdvancedMediaPlayer() {
// TODO Auto-generated constructor stub
}
@Override
public void playVLCFile(String fileName) {
// TODO Auto-generated method stub
System.out.println("playing VLC file : "+fileName);
}
@Override
public void playMP4File(String fileName) {
// TODO Auto-generated method stub
//do nothing
}
}
MP4AdvancedMediaPlayer.java
public class MP4AdvancedMediaPlayer implements AdvancedMediaPlayer {
public MP4AdvancedMediaPlayer() {
// TODO Auto-generated constructor stub
}
@Override
public void playVLCFile(String fileName) {
// TODO Auto-generated method stub
//do nothing
}
@Override
public void playMP4File(String fileName) {
// TODO Auto-generated method stub
System.out.println("playing MP4 file ::"+fileName);
}
}
AdvancedMediaAdapter.java
public class AdvancedMediaAdapter implements MediaPlayer {
private AdvancedMediaPlayer advanced;
public AdvancedMediaAdapter(String advancedPlayerName) {
// TODO Auto-generated constructor stub
if("VLC".equals(advancedPlayerName)){
advanced = new VLCAdvancedMediaPlayer();
} else {
advanced = new MP4AdvancedMediaPlayer();
}
}
public void playFile(String fileName, String fileType){
if("mp3".equalsIgnoreCase(fileType))
playMP3File(fileName);
else if(advanced instanceof VLCAdvancedMediaPlayer)
advanced.playVLCFile(fileName);
else if(advanced instanceof MP4AdvancedMediaPlayer)
advanced.playMP4File(fileName);
}
@Override
public void playMP3File(String fileName) {
// TODO Auto-generated method stub
System.out.println("playing Mp3 file by media adapter ::" + fileName);
}
}
AdapterPatternDemo.java
public class AdapterPatternDemo {
public AdapterPatternDemo() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//I want to play Mp3 file by Mp3 player
MediaPlayer mp3player = new WindowsMP3Player();
mp3player.playMP3File("Sarara.mp3");
//I want to play mp3, vlc, mp4 file by MediaAdapter
AdvancedMediaAdapter adapter = new AdvancedMediaAdapter("VLC");
adapter.playFile("Ararra.mp3", "mp3");
adapter.playFile("Ararra.vlc", "VLC");
adapter.playFile("Ararra.mp4", "VLC");
}
}
Output
