При чтении на шаблоне адаптера класса в Head First Design Patterns я натолкнулся на это предложение:
адаптер класса... потому что для его реализации требуется множественное наследование, что невозможно в Java
Чтобы экспериментировать, я попробовал следующее:
interface MyNeededInterface{
public void operationOne(MyNeededInterface other);
public MyNeededInterface operationTwo();
}
public class ThirdPartyLibraryClass{
public void thirdPartyOp();
}
Предположим, что создаю:
class ThirdPartyWrapper extends ThirdPartyLibraryClass implements MyNeededInterface{
@Override
public void operationOne(ThirdPartyWrapper other){
this.thirdPartyOp();
dosomeExtra();
}
@Override
public ThirdPartyWrapper operationTwo(){
int somevalue = doSomeThingElse();
return new ThirdPartyWrapper(somevalue);
}
}
В моем коде я могу использовать:
MyNeededInterface myclass = createThirdPartyWrapper();
myclass.operationOne(someobj);
...
Это не шаблон адаптера класса?