В классе сегодня мы говорили о отражении в Java-программировании. Часть урока сегодня заключалась в использовании InvocationHandler s в Java, а не просто в реализации интерфейса. Когда я спросил учителя, в чем преимущества использования обработчика вызова, ответа не было. Так скажем, у нас есть интерфейс плагинJAVA: В чем преимущества InvocationHandler над реализацией интерфейса?
public interface Plugin {
void calculate(double a, double b);
String getCommand();
}
вы можете легко реализовать этот интерфейс в классе Multiply
public class Multiply implements Plugin {
@Override
public void calculate(double a, double b){
return a * b;
}
@Override
public String getCommand(){
return "*";
}
}
Тогда почему я предпочитаю другую реализацию с использованием InvocationHandler?
public class MyMock {
public static Object createMock(Class myClass) {
InvocationHandler handler = new MyInvocationHandler();
Object result = Proxy.newProxyInstance(myClass.getClassLoader(), new Class[]{myClass}, handler);
return result;
}
}
Заранее спасибо :)
спасибо! это сделало это уже намного более ясным! :) – KoenVE