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を作成して使用できるようにした、というパターンです。
継承と委譲がありますが、自分としては委譲の方がしっくりきます。