Javaのブリッジパターン
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でから入手できます。