桥接设计模式
Contents
1. 概述
Gang of Four (GoF) 引入的 Bridge 设计模式的官方定义是将抽象与其实现分离,以便两者可以独立变化。
这意味着创建一个桥接接口,该接口使用 OOP 原则将职责分离到不同的抽象类中。
2. 桥接模式示例
对于桥接模式,我们将考虑两层抽象;一个是填充了不同颜色的几何形状(如三角形和正方形)(我们的第二个抽象层):
首先,我们将定义一个颜色界面:
public interface Color {
String fill();
}
现在我们将为这个接口创建一个具体的类:
public class Blue implements Color {
@Override
public String fill() {
return "Color is Blue";
}
}
现在让我们创建一个抽象的Shape类,它包含对Color对象的引用(桥):
public abstract class Shape {
protected Color color;
//standard constructors
abstract public String draw();
}
我们现在将创建一个Shape接口的具体类,它也将利用Color接口中的方法:
public class Square extends Shape {
public Square(Color color) {
super(color);
}
@Override
public String draw() {
return "Square drawn. " + color.fill();
}
}
对于此模式,以下断言将成立:
@Test
public void whenBridgePatternInvoked_thenConfigSuccess() {
//a square with red color
Shape square = new Square(new Red());
assertEquals(square.draw(), "Square drawn. Color is Red");
}
在这里,我们使用 Bridge 模式并传递所需的颜色对象。正如我们在输出中注意到的那样,形状被绘制成所需的颜色:
Square drawn. Color: Red
Triangle drawn. Color: Blue