Java中的桥接模式

2023/05/26

1. 概述

四人组(GoF)引入的桥接设计模式的官方定义是将抽象与其实现解耦,以便两者可以独立变化。

这意味着创建一个桥接接口,该接口使用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
void whenBridgePatternInvoked_thenConfigSuccess() {
    // a square with red color
    Shape square = new Square(new Red());
 
    assertEquals("Square drawn. Color is Red", square.draw());
}

在这里,我们使用桥接模式并传递所需的颜色对象,正如我们在输出中注意到的那样,形状会用所需的颜色绘制:

Square drawn. Color: Red
Triangle drawn. Color: Blue

3. 总结

在本文中,我们了解了桥接设计模式,在以下情况下这是一个不错的选择:

  • 当我们希望父抽象类定义基本规则集,而具体类来添加额外的规则时
  • 当我们有一个引用对象的抽象类时,它具有将在每个具体类中定义的抽象方法

与往常一样,本教程的完整源代码可在GitHub上获得。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章