Categories
Algorithms & Design Design Pattern Design Pattern

Adapter Pattern

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

Leave a comment

Design a site like this with WordPress.com
Get started