我花了一些时间在维基百科的这个桥模式示例上,但是,我仍然不明白这个桥模式试图解释什么。
接口绘图API {
公共无效drawCircle(双x,双y,双半径);
}
/** "ConcreteImplementor" 1/2 */
类 DrawingAPI1 实现 DrawingAPI {
公共无效drawCircle(双x,双y,双半径){
System.out.printf("API1.circle at %f:%f radius %f\n", x, y, radius);
}
}
/** "ConcreteImplementor" 2/2 */
类 DrawingAPI2 实现 DrawingAPI {
公共无效drawCircle(双x,双y,双半径){
System.out.printf("API2.circle at %f:%f radius %f\n", x, y, radius);
}
}
/** “抽象” */
界面形状{
公共无效绘制();// 低级
public void resizeByPercentage(double pct); // 高水平
}
/** “精炼抽象” */
类 CircleShape 实现形状 {
私人双 x,y,半径;
私有绘图API绘图API;
public CircleShape(double x, double y, double radius, DrawingAPI drawingAPI) {
这个.x = x; 这个.y = y; this.radius = 半径;
this.drawingAPI = 绘图API;
}
// 低级,即特定于实现
公共无效绘制(){
绘图API.drawCircle(x, y, 半径);
}
// 高级别的,即抽象特定的
公共无效resizeByPercentage(双百分比){
半径 *= pct;
}
}
/** “客户” */
类主{
公共静态无效主要(字符串[]参数){
形状 [] 形状 = 新形状 [2];
形状[0] = new CircleShape(1, 2, 3, new DrawingAPI1());
形状[1] = new CircleShape(5, 7, 11, new DrawingAPI2());
对于(形状形状:形状){
shape.resizeByPercentage(2.5);
形状.draw();
}
}
}
子类 CircleShape 构造函数接受 4 个参数,在它的 draw() 方法中,前 3 个参数被传递给第四个参数,它可以是来自 DrawingAPI 的任何子类。那么这是否意味着使用桥接模式可以增加灵活性呢?这个例子还能告诉我们更多的事情吗?
谢谢!!!!