桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与它的实现部分分离,使它们都可以独立地变化。桥接模式的核心思想是将抽象与实现解耦,使得它们可以独立扩展。
在桥接模式中,通常包含以下四个角色:
1、实现化(Implementor)角色:定义实现化角色的接口,这个接口不一定要与抽象化角色的接口完全一致,但一般来说,实现化角色的接口应当与抽象化角色的接口相类似。
// 实现化角色(Implementor)
public interface Color {
void fill();
}
2、具体实现化(ConcreteImplementor)角色:实现角色接口,实现具体的业务逻辑。
// 具体实现化角色(ConcreteImplementor)
public class Red implements Color {
@Override
public void fill() {
System.out.println("用红色填充");
}
}
public class Blue implements Color {
@Override
public void fill() {
System.out.println("用蓝色填充");
}
}
3、抽象化(Abstraction)角色:定义抽象类的接口,并保存一个对应实现化对象的引用。
public abstract class Shape {
protected Color color;
public Shape(Color color) {
this.color = color;
}
public abstract void draw();
public void setColor(Color color) {
this.color = color;
}
public Color getColor() {
return color;
}
}
4、扩展抽象化(RefinedAbstraction)角色:实现抽象化角色定义的接口,并扩展抽象化角色。扩展抽象化角色需要更新对实现化对象的引用,以间接调用实现化角色的方法。
public class Circle extends Shape {
public Circle(Color color) {
super(color);
}
@Override
public void draw() {
System.out.println("绘制圆形...");
color.fill();
}
}
具体代码引用
public static void main(String[] args) {
Shape redCircle = new Circle(new Red());
redCircle.draw();//用红色
Shape blueCircle = new Circle(new Blue());
blueCircle.draw();//用蓝色
}