以下是 桥接模式 (Bridge Pattern) 的详细介绍,包含定义、优缺点、应用场景及代码实现:
以下通过 图形绘制系统 的案例演示桥接模式,分离 形状 和 颜色 两个维度:
/**
* 实现部分接口:定义颜色填充行为
*/
public interface Color {
String applyColor();
}
// 具体颜色实现
public class Red implements Color {
@Override
public String applyColor() {
return "红色";
}
}
public class Blue implements Color {
@Override
public String applyColor() {
return "蓝色";
}
}
/**
* 抽象部分基类:定义形状,持有颜色接口的引用(桥接关键)
*/
public abstract class Shape {
protected Color color; // 桥接颜色实现
public Shape(Color color) {
this.color = color;
}
// 抽象方法:绘制形状(由子类实现)
public abstract String draw();
}
/**
* 具体形状:圆形
*/
public class Circle extends Shape {
public Circle(Color color) {
super(color);
}
@Override
public String draw() {
return "绘制圆形,填充颜色:" + color.applyColor();
}
}
/**
* 具体形状:正方形
*/
public class Square extends Shape {
public Square(Color color) {
super(color);
}
@Override
public String draw() {
return "绘制正方形,填充颜色:" + color.applyColor();
}
}
public class Client {
public static void main(String[] args) {
// 红色圆形
Color red = new Red();
Shape redCircle = new Circle(red);
System.out.println(redCircle.draw());
// 蓝色正方形
Color blue = new Blue();
Shape blueSquare = new Square(blue);
System.out.println(blueSquare.draw());
}
}
绘制圆形,填充颜色:红色
绘制正方形,填充颜色:蓝色
+----------------+ +----------------+
| Abstraction | <------+ | Implementor |
+----------------+ +----------------+
| +impl:Implementor | +operationImpl()|
| +operation() | +----------------+
+----------------+ ^
^ |
| |
+----------------+ +----------------+
| RefinedAbstraction | ConcreteImplementor |
+----------------+ +----------------+
| +operation() | | +operationImpl() |
+----------------+ +----------------+
桥接模式在 Java 生态中广泛应用,例如 JDBC 的 Driver
与 Connection
分离、Swing 的 GUI 组件与平台渲染实现。掌握该模式能有效应对多维度扩展需求,降低代码耦合度。