Bridge Template Example

I spent some time on this example of the Bridge template from wikipedia , however, I still do not understand what kind of bridge template I am trying to explain.

interface DrawingAPI {
    public void drawCircle (double x, double y, double radius);
}

/ ** "ConcreteImplementor" 1/2 * /
class DrawingAPI1 implements DrawingAPI {
   public void drawCircle (double x, double y, double radius) {
        System.out.printf ("API1.circle at% f:% f radius% f \ n", x, y, radius);
   }
}

/ ** "ConcreteImplementor" 2/2 * /
class DrawingAPI2 implements DrawingAPI {
   public void drawCircle (double x, double y, double radius) {
        System.out.printf ("API2.circle at% f:% f radius% f \ n", x, y, radius);
   }
}

/ ** "Abstraction" * /
interface Shape {
   public void draw (); // low-level
   public void resizeByPercentage (double pct); // high-level
}

/ ** "Refined Abstraction" * /
class CircleShape implements Shape {
   private double x, y, radius;
   private DrawingAPI drawingAPI;
   public CircleShape (double x, double y, double radius, DrawingAPI drawingAPI) {
       this.x = x; this.y = y; this.radius = radius;
       this.drawingAPI = drawingAPI;
   }

   // low-level ie Implementation specific
   public void draw () {
        drawingAPI.drawCircle (x, y, radius);
   }
   // high-level ie Abstraction specific
   public void resizeByPercentage (double pct) {
        radius * = pct;
   }
}

/ ** "Client" * /
class Main {
   public static void main (String [] args) {
       Shape [] shapes = new Shape [2];
       shapes [0] = new CircleShape (1, 2, 3, new DrawingAPI1 ());
       shapes [1] = new CircleShape (5, 7, 11, new DrawingAPI2 ());

       for (Shape shape: shapes) {
           shape.resizeByPercentage (2.5);
           shape.draw ();
       }
   }
}

The CircleShape constructor of the subclass takes 4 arguments; in the draw () method, the first 3 arguments are passed to the 4th argument, which can be any DrawingAPI subclass. Does this mean that using a bridge template can increase flexibility? and are there any other things that this example can tell us?

Thanks!!!!

+5
source share
2 answers

, , . , DrawingAPI1 , DrawingAPI2 . DrawingAPI - API . CircleShape , DrawingAPI. , DrawingAPI Shape.draw() , , .

+6

CircleShape 4 , draw() 3 4- , DrawingAPI. , ? , ?

. Bridge , -.

CircleShape , DrawingAPI , API DrawingAPI DrawingAPI

Shape CircleShape DrawingAPI.

Bridge SE, :

?

0

All Articles