1.创建接口
public interface SayHello {
void sayHello();
}
2.实现接口
public class SayHelloImpl implements SayHello {
@Override
public void sayHello() {
System.out.println("Hello");
}
}
3.编写代理类,实现接口 InvocationHandler
public class DaiLi implements InvocationHandler {
//真实对象
private Object object;
/**
* 建立代理对象和真实对象的代理关系,并返回代理对象
* @param target 真实对象
* @return
*/
public Object bind(Object target){
this.object = target;
return Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(),this);
}
/**
* 代理对象逻辑
* @param proxy 代理对象
* @param method 当前调度的方法
* @param args 当前方法的参数
* @return 代理结果返回
* @throws Throwable 异常
*/
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("--------------------");
System.out.println("调度前");
Object o = method.invoke(object,args);
System.out.println("调度后");
return o;
}
/**
* 动态代理测试
* @param arg
*/
public static void main(String[] arg){
DaiLi daiLi = new DaiLi();
SayHello sayHello =(SayHello)daiLi.bind(new SayHelloImpl());
sayHello.sayHello();
}
}
4.运行结果
