我花了一些时间从wikipedia上这个桥模式示例,但是,我仍然不明白这个桥模式试图解释什么。

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

/**“ConcreteImplementor” 1/2 */
class DrawingAPI1实现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 */
类DrawingAPI2实现DrawingAPI {
public void drawCircle(double x,double y,double radius){
System.out.printf(“API2.circle at%f:%f radius%f\n”,x,y,radius);
}
}

/**“抽象” */
界面形状{
公共(public)无效draw();//低级
public void resizeByPercentage(double pct);//高水平
}

/**“提炼的抽象” */
CircleShape类实现Shape {
私有(private)双倍x,y,半径;
私有(private)DrawingAPI drawingAPI;
public CircleShape(double x,double y,double radius,DrawingAPI drawingAPI){
this.x = x; this.y = y; this.radius =半径;
this.drawingAPI = drawingAPI;
}

//低层,即特定于实现
公共(public)无效draw(){
drawingAPI.drawCircle(x,y,radius);
}
//高层,即特定于抽象
public void resizeByPercentage(double pct){
半径* = pct;
}
}

/** “客户” */
主类{
公共(public)静态void main(String [] args){
Shape []形状= new Shape [2];
shapes [0] = new CircleShape(1、2、3,new DrawingAPI1());
Shapes [1] = new CircleShape(5,7,11,new DrawingAPI2());

对于(形状:形状),{
shape.resizeByPercentage(2.5);
shape.draw();
}
}
}

子类CircleShape构造函数接受4个arg,在其draw()方法中,前3个arg传递给第4个arg,该arg可以是DrawingAPI的任何子类。
那么这是否意味着使用桥接模式可以提高灵活性?
还有这个示例可以告诉我们的更多信息吗?

谢谢!!!!

最佳答案

一个更具体的例子说明为什么这样做有用。假设DrawingAPI1封装了您的图形驱动程序,而DrawingAPI2对您的打印机驱动程序做了同样的事情。那么DrawingAPI是图形系统的通用API。它使您可以将CircleShape绘制到显示器上,并使用相同的代码将其打印在纸上,而只需传入不同的DrawingAPI实现即可。但是,如果将DrawingAPI传递给Shape.draw()而不是将其传递给构造函数,则它将更加灵活,因为这样便可以为监视器和打印机使用相同的对象图。

10-08 16:15