文章目录
- Java 设计模式之桥接模式
- 概述
- UML
- 代码实现
Java 设计模式之桥接模式
概述
- 桥接模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
- 通过桥接模式,可以避免类爆炸问题,并提高系统的可扩展性。
UML
核心思想:
- 抽象部分:定义高层的控制逻辑。
- 实现部分:定义底层的具体实现。
- 桥接:通过组合的方式连接抽象部分和实现部分。
角色:
- Implementor:实现部分的接口,定义行为。
- ConcreteImplementor:具体实现部分类,实现行为。
- Abstraction:抽象部分的抽象类,持有实现部分的引用。
- RefinedAbstraction:具体抽象部分类,实现具体的抽象逻辑。
例如:图形绘制中的形状和颜色。
代码实现
假设我们需要绘制不同形状(如圆形、矩形)的图形,并且这些图形可以使用不同的颜色(如红色、绿色)。使用桥接模式可以将形状和颜色分离,使它们可以独立扩展。
定义部分实现的接口:
public interface Color {
void applyColor();
}
定义具体的部分实现类:
public class Red implements Color {
@Override
public void applyColor() {
System.out.println("使用红色");
}
}
public class Green implements Color {
@Override
public void applyColor() {
System.out.println("使用绿色");
}
}
定义抽象实现的抽象类:
public abstract class Shape {
protected Color color;
public Shape(Color color) {
this.color = color;
}
public abstract void draw();
}
定义具体的抽象实现类:
public class Rectangle extends Shape {
public Rectangle(Color color) {
super(color);
}
@Override
public void draw() {
System.out.println("绘制矩形");
color.applyColor();
}
}
public class Circle extends Shape {
public Circle(Color color) {
super(color);
}
@Override
public void draw() {
System.out.println("绘制圆形");
color.applyColor();
}
}
使用:
public class Client {
public static void main(String[] args) {
Red red = new Red();
Green green = new Green();
Shape redCircle = new Circle(red);
Shape greenCircle = new Circle(green);
redCircle.draw();
greenCircle.draw();
}
}
输出:
绘制圆形
使用红色
绘制圆形
使用绿色