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

Adapterパターンのコード例です。

Adapterには継承を使ったパターンと委譲を使ったパターンがあります。

まずは継承を使用したパターン。

package org.example.adapter;

public class Adaptee {
    public void methodA()
    {

    }

    public void methodB()
    {

    }
}
package org.example.adapter;

public interface Target {
    public void targetMethod1();
    public void targetMethod2();
}
package org.example.adapter;

public class Adapter extends Adaptee implements Target{
    public void targetMethod1() {
        methodA();
    }

    public void targetMethod2() {
        methodB();
    }
}
package org.example.adapter;

public class Main {
    public static void main(String[] args)
    {
        Adaptee adaptee = new Adaptee();
        adaptee.methodA();
        adaptee.methodB();

        Adapter adapter = new Adapter();
        adapter.targetMethod1();
        adapter.targetMethod2();
    }
}

そして、委譲を使用したパターン。

package org.example.adapter;

public class Adapter implements Target{
    Adaptee adaptee;

    public Adapter()
    {
        adaptee = new Adaptee();
    }

    public void targetMethod1() {
        adaptee.methodA();
    }

    public void targetMethod2() {
        adaptee.methodB();
    }
}

このパターンは元々存在していたクラスAdapteeを使用したいけど、インターフェースが合わない、と言う場合、新しいクラスAdapterを作成して使用できるようにした、というパターンです。

継承と委譲がありますが、自分としては委譲の方がしっくりきます。

コメントを残す

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

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