【デザインパターン】Bridgeパターン

Bridgeパターンのサンプルコードです。

package org.example.bridge;

public abstract class Implementor {
    public abstract void implMethodX();
    public abstract void implMethodY();
}
package org.example.bridge;

public class concreteImplementorA extends Implementor{
    @Override
    public void implMethodX() {

    }

    @Override
    public void implMethodY() {

    }
}
package org.example.bridge;

public class concreteImplementorB extends Implementor{
    @Override
    public void implMethodX() {

    }

    @Override
    public void implMethodY() {

    }
}
package org.example.bridge;

public class Abstraction {
    Implementor implementor;

    public Abstraction(Implementor implementor)
    {
        this.implementor = implementor;
    }

    public void method1()
    {

    }

    public void method2()
    {

    }
}
package org.example.bridge;

public class RefileAbstraction extends Abstraction{
    public RefileAbstraction(Implementor implementor) {
        super(implementor);
    }

    @Override
    public void method1()
    {

    }

    @Override
    public void method2()
    {

    }

    public void refineMethodA()
    {

    }

    public void refineMethodB()
    {

    }
}
package org.example.bridge;

public class Main {
    public static void main(String[] args)
    {
        RefileAbstraction refileAbstraction1 = new RefileAbstraction(new concreteImplementorA());
        refileAbstraction1.method1();
        refileAbstraction1.method2();
        refileAbstraction1.refineMethodA();
        refileAbstraction1.refineMethodB();

        RefileAbstraction refileAbstraction2 = new RefileAbstraction(new concreteImplementorB());
        refileAbstraction2.method1();
        refileAbstraction2.method2();
        refileAbstraction2.refineMethodA();
        refileAbstraction2.refineMethodB();
    }
}

Bridgeパターンは、処理を機能(Abstraction)と実装(Implementor)に分けてコーディングするパターンです。

処理を拡張する場合はImplementorを継承してconcreteImplementorクラスを作成、機能側にそのインスタンスを渡すイメージです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください