Categories
Algorithms & Design Design Pattern Design Pattern

Bridge Pattern

Shape.java

public abstract class Shape {

	protected ColorAPI colorHandle;
	public Shape(ColorAPI colorHandle){
		this.colorHandle=colorHandle;
	}
	
	public abstract void draw();
}

ColorAPI.java

public interface ColorAPI {

	public void applyColor();
}

Square.java

public class Square extends Shape {

	private int x,y;
	
	public Square(int x, int y, ColorAPI colorHandler) {
		// TODO Auto-generated constructor stub
		super(colorHandler);
		this.x=x;
		this.y=y;
		
	}

	@Override
	public void draw() {
		// TODO Auto-generated method stub
		System.out.println("Drawing shape of square from co-ordinates x:" + this.x + ", y:"+this.y);
		this.colorHandle.applyColor();
	}

}

GreenColor.java

public class GreenColor implements ColorAPI {

	public GreenColor() {
		// TODO Auto-generated constructor stub
		super();
	}

	@Override
	public void applyColor() {
		// TODO Auto-generated method stub
		System.out.println("applying green color");
	}

}

RedColor.java

public class RedColor implements ColorAPI {

	public RedColor() {
		// TODO Auto-generated constructor stub
	}

	@Override
	public void applyColor() {
		// TODO Auto-generated method stub
		System.out.println("Applying red color");
	}

}

BridgePatternDemo.java

public class BridgePatternDemo {

	public BridgePatternDemo() {
		// TODO Auto-generated constructor stub
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//Draw the Red square
		ColorAPI colorHandleRed = new RedColor();
		Shape redSquare = new Square(10, 10, colorHandleRed);
		redSquare.draw();
		
		//Draw the Green Square
		ColorAPI colorHandleGreen = new GreenColor();
		Shape greenSquare = new Square(20, 20, colorHandleGreen);
		greenSquare.draw();
		
		
	}

}

Output

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

Design a site like this with WordPress.com
Get started