Contents

桥接设计模式

1. 概述

Gang of Four (GoF) 引入的 Bridge 设计模式的官方定义是将抽象与其实现分离,以便两者可以独立变化。

这意味着创建一个桥接接口,该接口使用 OOP 原则将职责分离到不同的抽象类中。

2. 桥接模式示例

对于桥接模式,我们将考虑两层抽象;一个是填充了不同颜色的几何形状(如三角形和正方形)(我们的第二个抽象层):

/uploads/java_bridge_pattern/1.jpg

首先,我们将定义一个颜色界面:

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