パターンアダプタが役立つ場合があります。
想像してみてください。SomeClassをTargetInterfaceとして使用する必要があります
public abstract class SomeClass {
// some code here
public abstract void someMethod();
}
public interface TargetInterface {
public void someMethodBlaBla();
}
そして、それらはメソッドの異なるシグネチャを持っています-someMethod()とsomeMethodBlaBla()。
したがって、このようなアダプタクラスを作成する可能性があります。
public class Adapter implements TargetInterface {
private SomeClass adaptee;
public Adapter( SomeClass adaptee ) {
this.adaptee = adaptee;
}
public void someMethodBlaBla() {
this.adaptee.someMethod();
}
//delegate all calls to adaptee
}
そして、コードのどこかで、現在のコードに干渉することなく、アダプターと抽象クラスのインスタンスの両方を使用できます。
SomeClass abstractClassInstance = ... //get instance of your abstract class
TargetInterface targetInterfaceInstance = new Adapter( abstractClassInstance );