您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
在Java中,拦截器(Interceptor)是一种设计模式,用于在不修改原始类代码的情况下,对方法的调用进行拦截和处理
拦截器的工作原理如下:
public interface MyInterceptor {
void beforeMethod();
void afterMethod();
}
public class MyInterceptorImpl implements MyInterceptor {
@Override
public void beforeMethod() {
System.out.println("Before method execution");
}
@Override
public void afterMethod() {
System.out.println("After method execution");
}
}
import java.util.ArrayList;
import java.util.List;
public class InterceptorManager {
private List<MyInterceptor> interceptors = new ArrayList<>();
public void addInterceptor(MyInterceptor interceptor) {
interceptors.add(interceptor);
}
public void removeInterceptor(MyInterceptor interceptor) {
interceptors.remove(interceptor);
}
public void executeBeforeMethod(Object target, String methodName) {
for (MyInterceptor interceptor : interceptors) {
interceptor.beforeMethod();
}
}
public void executeAfterMethod(Object target, String methodName) {
for (int i = interceptors.size() - 1; i >= 0; i--) {
interceptors.get(i).afterMethod();
}
}
}
public class MyClass implements MyInterface {
private InterceptorManager interceptorManager = new InterceptorManager();
public MyClass(MyInterceptor interceptor) {
interceptorManager.addInterceptor(interceptor);
}
@Override
public void myMethod() {
interceptorManager.executeBeforeMethod(this, "myMethod");
System.out.println("Inside myMethod");
interceptorManager.executeAfterMethod(this, "myMethod");
}
}
public class TestInterceptor {
public static void main(String[] args) {
MyInterceptor interceptor = new MyInterceptorImpl();
MyClass obj = new MyClass(interceptor);
obj.myMethod();
}
}
运行上述代码,将看到以下输出:
Before method execution
Inside myMethod
After method execution
这表明拦截器已成功地在方法调用之前和之后执行。通过这种方式,可以在不修改原始类代码的情况下,为方法添加额外的处理逻辑。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。