jdk动态代理例子
1. 声明接口
package cn.zhengyong.proxy;
/**
* 接口
* @author zhengyong
*
*/
public interface OriginInterface {
public void testProxy();
}
2. 实现接口
package cn.zhengyong.proxy;
/**
* 实现类
* @author zhengyong
*
*/
public class OriginImpl implements OriginInterface{
@Override
public void testProxy() {
System.out.println("test finish.");
}
}
3. 创建代理类,需要持有接口对象
package cn.zhengyong.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
/**
*
* 代理类实现InvocationHandler
*
* @author zhengyong
*
*/
public class OriginProxy implements InvocationHandler{
private Object target;
public OriginProxy(OriginInterface target){
super();
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("begin invoke method.");
Object result = method.invoke(target, args);
System.out.println("end invoke method.");
return result;
}
}
4. 创建测试类
package cn.zhengyong.proxy;
import java.lang.reflect.Proxy;
/**
* @author zhengyong
*
*/
public class ProxyTest {
public static void main(String[] args) {
5. 运行结果
begin invoke method.
test finish.
end invoke method.