Tuesday, May 31, 2016

Design Pattern - Bridge Design Pattern java

What is Bridge Design Pattern?

Bridge DP is Structural Pattern.Bridge pattern is used to separate out the interface from its implementation.

For Example:   Let us take case of Electrical equipments we have at home and their switches.Switch of the fan.the switch is the interface and the actual implementation is the running of the fan once its switched-on .both the switch and fan  are independent of each other.

Implementation:

/**
 * @author Abhinaw.Tripathi
 *
 */
interface Tv
{
  public void powerOn();
  public void powerOff();
  public void channelChange(int channel);
}

class Google implements Tv
{

@Override
public void powerOn() {
// TODO Auto-generated method stub
//google specific code
}

@Override
public void powerOff() {
// TODO Auto-generated method stub
//google specific code
}

@Override
public void channelChange(int channel) {
// TODO Auto-generated method stub
//google specific code
}
}

class Samsung implements Tv
{

@Override
public void powerOn() {
// TODO Auto-generated method stub
//Samsung specific code
}

@Override
public void powerOff() {
// TODO Auto-generated method stub
//Samsung specific code
}

@Override
public void channelChange(int channel) {
// TODO Auto-generated method stub
//Samsung specific code
}
}

abstract class TVremoteControl
{
  private Tv implementor;
  
  public void powerOn()
  {
 implementor.powerOn();
  }
  
  public void powerOff()
  {
 
 implementor.powerOff();
  }
  
  public void setChannel(int channnel)
  {
 implementor.channelChange(channnel);
 
  }
  
}

class ConcreteTVRemoteControl extends TVremoteControl
{
private int currentChannel;
public void nextChannel()
{
currentChannel++;
setChannel(currentChannel);
}
public void prevChannel()
{
currentChannel --;
setChannel(currentChannel);
}
}



public class BridgePatternTest {

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

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ConcreteTVRemoteControl remote=new ConcreteTVRemoteControl();
remote.nextChannel();
remote.setChannel(12);
remote.prevChannel();
remote.powerOff();
remote.powerOn();
remote.powerOff();

}

}

When to Use Bridge Design Pattern:

1) This pattern should be used when both  the class as well  as what it does very often.
2)It can also be thought of as two layer  of abstraction.
3)It is useful in times when you need to switch between multiple implementations at runtime.

No comments: