一、概述
桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立变化。桥接模式通过将抽象和实现进行解耦,让它们可以独立地扩展和变化,同时可以在运行时动态地将不同的抽象和实现组合起来。
二、代码
下面是一个简单的桥接模式的代码示例,假设我们要绘制不同颜色的圆形和矩形:
//1.实现部分的接口
public interface Color {
//涂色方法
void applyColor();
}
//2.具体实现部分:绿色
public class GreenColor implements Color {
@Override
public void applyColor() {
System.out.println("涂上绿色");
}
}
//3.具体实现部分:红色
public class RedColor implements Color {
@Override
public void applyColor() {
System.out.println("涂上红色");
}
}
//4.抽象部分接口
public abstract class Shape {
protected Color color;
public Shape(Color color) {
this.color = color;
}
//绘制形状的方法
abstract void draw();
}
//5.具体抽象部分:圆形
public class Circle extends Shape {
public Circle(Color color) {
super(color);
}
@Override
void draw() {
System.out.print("画个圆.");
color.applyColor();
}
}
//6.具体抽象部分:矩形
public class Rectangle extends Shape {
public Rectangle(Color color) {
super(color);
}
@Override
void draw() {
System.out.print("画个矩形.");
color.applyColor();
}
}
//7.测试类
public class Test {
public static void main(String[] args) {
// 创建不同颜色的形状对象
Shape redCircle = new Circle(new RedColor());
Shape greenRectangle = new Rectangle(new GreenColor());
// 绘制不同颜色的形状
redCircle.draw();
greenRectangle.draw();
}
}
在上述示例中,我们通过桥接模式将抽象部分(Shape
)和实现部分(Color
)进行解耦。Color
接口定义了颜色的应用方法 applyColor()
,RedColor
和 GreenColor
是具体的颜色实现类。
Shape
是抽象部分接口,它包含一个对 Color
对象的引用,并定义了一个抽象的绘制方法 draw()
。Circle
和 Rectangle
是具体的抽象部分实现类,它们继承自 Shape
接口并实现了 draw()
方法,在方法中调用了 Color
对象的 applyColor()
方法。
在测试类中,我们创建了不同颜色的形状对象,并通过调用 draw()
方法来绘制形状。由于抽象部分和实现部分已经解耦,我们可以在运行时动态地将不同的抽象和实现组合起来,实现不同颜色的形状绘制。