3.实现核心的拦截器类当某个方法被调用之前或之后执行相应的拦截器的方法.至于要拦截哪一个对象,则需通过后面的操作来体现.
//PersonIntercepter.java
package cn.edu.hld;
public class PersonIntercepter
{
public void method1()
{
System.out.println("method_1被执行了!") ;
}
public void method2()
{
System.out.println("method_2被执行了!") ;
}
}
4.为了让拦截器知道其要拦截的目标对象,以及其应执行的方法,则应该创建一个类,该类实现一个JDK反射体系里的接口InvocationHandler.
//ProxyHandler .java
package cn.edu.hld;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class ProxyHandler implements InvocationHandler
{
private Object target ;
private PersonIntercepter pi = new PersonIntercepter() ;
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable
{
Object result = null ;
if(method.getName().equals("info"))
{
pi.method1() ;
result = method.invoke(target, args) ;
pi.method2() ;
}
else
{
result = method.invoke(target, args) ;
}
return result;
}
public void setTarget(Object target)
{
this.target = target;
}
}
责任编辑:小草