Разница между перехватчиками и декораторамиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Разница между перехватчиками и декораторами

Сообщение Anonymous »

Есть ли какие-либо различия между перехватчиками и декораторами в Java? Строго говоря, могу ли я реализовать с помощью декораторов то, что невозможно с помощью перехватчиков, и наоборот?

За исключением проблемы, заключающейся в том, что мне придется проверять имя метода, чтобы добавить метод- конкретное поведение перехватчика:

Перехватчик:

Код: Выделить всё

@Nice
@Interceptor
public class NiceGreeterInterceptor {
@AroundInvoke
public Object decorate(InvocationContext ic) throws Exception {
Method method = ic.getMethod();
String methodName = method.getName();
Object result = ic.proceed();
if (methodName.equals("greet")) {
return "NEW " + result;
}
}
}
Декоратор:

Код: Выделить всё

@Decorator
public class GreeterDecorator implements Greeter {
@Inject
@Any
@Delegate
private Greeter greeter;

@Override
public String greet() {
return "NEW " + greeter.greet();
}
}
Или правомерно ли утверждать, что я могу воспроизвести все поведение декораторов с помощью перехватчиков, но удобнее использовать декораторы?

Подробнее здесь: https://stackoverflow.com/questions/357 ... decorators
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»