一、概述
桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立变化。桥接模式通过将抽象和实现进行解耦,让它们可以独立地扩展和变化,同时可以在运行时动态地将不同的抽象和实现组合起来。
二、代码
下面是一个简单的桥接模式的代码示例,假设我们要绘制不同颜色的圆形和矩形:
//1.实现部分的接口
public interface Color {//涂色方法void applyColor();
}
//2.具体实现部分:绿色
public class GreenColor implements Color {@Overridepublic void applyColor() {System.out.println("涂上绿色");}
}
//3.具体实现部分:红色
public class RedColor implements Color {@Overridepublic 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);}@Overridevoid draw() {System.out.print("画个圆.");color.applyColor();}
}
//6.具体抽象部分:矩形
public class Rectangle extends Shape {public Rectangle(Color color) {super(color);}@Overridevoid 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()
方法来绘制形状。由于抽象部分和实现部分已经解耦,我们可以在运行时动态地将不同的抽象和实现组合起来,实现不同颜色的形状绘制。