1. 概要

Gang of Four(GoF)によって導入されたブリッジデザインパターンの公式の定義は、抽象化をその実装から切り離して、2つが独立して変化できるようにすることです。

これは、OOPの原則を使用して、責任をさまざまな抽象クラスに分離するブリッジインターフェイスを作成することを意味します。

2. ブリッジパターンの例

ブリッジパターンについては、2層の抽象化を検討します。 1つは、さまざまな色で塗りつぶされた幾何学的形状(三角形や正方形など)です(2番目の抽象化レイヤー)。

まず、カラーインターフェイスを定義します。

public interface Color {
    String fill();
}

次に、このインターフェイスの具象クラスを作成します。

public class Blue implements Color {
    @Override
    public String fill() {
        return "Color is Blue";
    }
}

次に、 Color オブジェクトへの参照(ブリッジ)で構成される抽象Shapeクラスを作成しましょう。

public abstract class Shape {
    protected Color color;
    
    //standard constructors
    
    abstract public String draw();
}

次に、 Shape interfaceの具象クラスを作成します。これは、Colorinterfaceのメソッドも利用します。

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");
}

ここでは、ブリッジパターンを使用して、目的のカラーオブジェクトを渡します。 出力でわかるように、シェイプは目的の色で描画されます。

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

3. 結論

この記事では、ブリッジのデザインパターンを確認しました。 これは、次の場合に適しています。

  • 親の抽象クラスで基本ルールのセットを定義し、具象クラスでルールを追加する場合
  • オブジェクトへの参照を持つ抽象クラスがあり、各具象クラスで定義される抽象メソッドがある場合

この例の完全なソースコードは、GitHubから入手できます。