mardi 13 juin 2017

Bridge Pattern:: decouples abstraction from implementation so that both can vary independently

In Bridge pattern i have read "decouples abstraction from implementation so that both can vary independently". what does it mean really ? and how does this phrase related to the Bridge pattern example given below? i understand this code but unable to relate this code with phrase. can anyone explain this. (i have taken this example from Bridge pattern implementation in java )

Thanks.

/* Implementor interface*/    


interface Gear    
{
 void handleGear();
}

/* Concrete Implementor - 1 */

class ManualGear implements Gear{

public void handleGear(){

    System.out.println("Manual gear");
}
}

/* Concrete Implementor - 2 */

class AutoGear implements Gear{

public void handleGear(){
    System.out.println("Auto gear");
}
}

/* Abstraction (abstract class) */

abstract class Vehicle {
Gear gear;

public Vehicle(Gear gear){

    this.gear = gear;
}

abstract void addGear();
}

   /* RefinedAbstraction - 1*/

    class Car extends Vehicle{

public Car(Gear gear){

    super(gear);

    // initialize various other Car components to make the car
}

public void addGear(){

    System.out.print("Car handles ");

    gear.handleGear();

    }
}

/* RefinedAbstraction - 2 */

class Truck extends Vehicle{

public Truck(Gear gear){

    super(gear);

    // initialize various other Truck components to make the car

}

public void addGear(){
    System.out.print("Truck handles " );
    gear.handleGear();
}
}

/* Client program */

public class BridgeDemo {  

public static void main(String args[]){

    Gear gear = new ManualGear();

    Vehicle vehicle = new Car(gear);

    vehicle.addGear();

    gear = new AutoGear();
    vehicle = new Car(gear);
    vehicle.addGear();

    gear = new ManualGear();
    vehicle = new Truck(gear);
    vehicle.addGear();

    gear = new AutoGear();
    vehicle = new Truck(gear);
    vehicle.addGear();
}
}

output
Car handles Manual gear
Car handles Auto gear
Truck handles Manual gear
Truck handles Auto gear

Aucun commentaire:

Enregistrer un commentaire