我是一个小白在学习过程中,如果写的有不对的地方请直接指出来方便我学习

 

 

动态代理简单实现

javajava.lang.reflect包下提供了一个Proxy类和一个InvocationHandler接口,通过这个类和这个接口可以生成JDK动态代理类和动态代理对象。

创建一个动态代理对象步骤,具体代码见后面:

我写的简单点 大概意思就是这样

先创建一个目标类接口

 

public interface IWaiter {
public void serve();
}
写一个目标类
public class GirlWaiter implements IWaiter{

public void serve() {
System.out.println("上菜");
}
}
写一个通知类
public class Advice {
public void smile() {
System.out.println("微笑服务");
}

public void discount() {
System.out.println("打折服务");
}
}
动态代理代码
public class test {

public static void main(String[] args) {
final GirlWaiter girlWaiter = new GirlWaiter();//创建目标对象
final Advice advice = new Advice();//创建增强对象
IWaiter proxy = (IWaiter) Proxy.newProxyInstance(
girlWaiter.getClass().getClassLoader(),//目标对象类加载器
girlWaiter.getClass().getInterfaces(),//目标对象的相同的接口字节码对象数组
new InvocationHandler() {
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
advice.smile();//前置增强代码
//调用代理对象的任何方法 实质执行的是invoke方法
method.invoke(girlWaiter, args);
advice.discount();//后置增强代码
return null;
}
});
//调用代理方法
proxy.serve();
}
}




 

posted on 2019-06-02 21:27  段苏这些  阅读(106)  评论(0编辑  收藏  举报