桥接模式(Bridge Pattern)是一种结构型设计模式,用于将抽象部分与其实现部分分离,使它们可以独立变化。这种模式通过创建一个桥接实现接口,把抽象和实现放在两个不同的类层次中,使两者可以独立地改变。
在桥接模式中,通常涉及到以下两个层次:
假设我们正在开发一个图形编辑器,需要支持多种不同的形状,并且每种形状可以有多种不同的绘制方式。这是一个使用桥接模式的典型场景。
首先,我们定义实现层接口DrawAPI
,用于绘制形状:
java复制代码
public interface DrawAPI {
void drawCircle(int radius, int x, int y);
}
然后,实现这个接口的具体类表示具体的绘制方法:
java复制代码
public class RedCircle implements DrawAPI {
public void drawCircle(int radius, int x, int y) {
System.out.println("Drawing Circle[ color: red, radius: " + radius + ", x: " + x + ", y:" + y + "]");
}
}
public class GreenCircle implements DrawAPI {
public void drawCircle(int radius, int x, int y) {
System.out.println("Drawing Circle[ color: green, radius: " + radius + ", x: " + x + ", y:" + y + "]");
}
}
接着,定义抽象层Shape
,它持有一个DrawAPI
的引用,用于画出不同的形状:
java复制代码
public abstract class Shape {
protected DrawAPI drawAPI;
protected Shape(DrawAPI drawAPI) {
this.drawAPI = drawAPI;
}
public abstract void draw();
}
最后,具体的抽象层实现类可以用不同的绘制方法来画出相同的形状:
java复制代码
public class Circle extends Shape {
private int x, y, radius;
public Circle(int x, int y, int radius, DrawAPI drawAPI) {
super(drawAPI);
this.x = x;
this.y = y;
this.radius = radius;
}
public void draw() {
drawAPI.drawCircle(radius, x, y);
}
}
这样,Circle
可以被配置为使用RedCircle
或GreenCircle
中的任何一个来绘制,而且如果需要添加新的绘制方法,只需要扩展DrawAPI
接口,不需要修改抽象层代码。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。