①TargetInterface
package com.hzp.interceptor;
//目标对象接口
public interface TargetInterface {
public void doSomething();
}
②Target
package com.hzp.interceptor;
//目标对象
public class Target implements TargetInterface {
public void doSomething() {
System.out.println("doSomething");
}
}
③MyProxy
package com.hzp.interceptor;
import java.lang.reflect.Proxy;
//动态代理类
public class MyProxy {
public Object getProxy(Object o){
Handler handler=new Handler();
handler.setObject(o);
return Proxy.newProxyInstance(Target.class.getClassLoader(),o.getClass().getInterfaces(),handler);
}
}
④Interceptor
package com.hzp.interceptor;
//拦截器
public class Interceptor {
public void before(){
System.out.println("before");
}
public void after(){
System.out.println("after");
}
}
⑤Handler
package com.hzp.interceptor;
//处理类
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class Handler implements InvocationHandler {
private Object object;
private Interceptor interceptor=new Interceptor();
public void setObject(Object o){
this.object=o;
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object result= null;
interceptor.before();
method.invoke(object, args);
interceptor.after();
return result;
}
}
⑥Client
package com.hzp.interceptor;
//测试类
public class Client {
public static void main(String[] args){
TargetInterface target=new Target();
MyProxy myProxy=new MyProxy();
TargetInterface proxy=(TargetInterface)myProxy.getProxy(target);
proxy.doSomething();
}
}