转载

Java动态代理

1 什么是动态代理

在程序运行时,对原有对象的功能进行增强

2 动态代理的应用场景

解决POST请求乱码问题

敏感词汇的过滤

3 开发步骤

  1. 代理对象和真实对象实现相同的接口
  2. 代理对象 = Proxy.newProxyInstance();
  3. 使用代理对象调用方法。
  4. 增强方法

4 使用动态代理

public interface IStar {

public void sing(int money);

} public class Tom implements IStar { @Override

public void sing(int money) {
    System.out.println("春春买力的唱歌");
}

} public class Test { public static void main(String[] args) {

Tom tom = new Tom();//目标对象

    IStar proxyTom = (IStar) Proxy.newProxyInstance(
            tom.getClass().getClassLoader(),
            tom.getClass().getInterfaces(),
            new InvocationHandler() {
                @Override
                public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                    if ("sing".equals(method.getName())) {
                        int money = (int) args[0];
                        if (money >= 200) {
                            method.invoke(tom, args);
                        } else {
                            System.out.println("出场费要>=200元,春春才开始演唱");
                        }
                    }
                    return null;
                }
            }
    );//代理对象

    proxyTom.sing(100);
    System.out.println("---------------");
    proxyTom.sing(200);
}

}

更多技术咨询可关注:gzitcast

原文  https://segmentfault.com/a/1190000020334186
正文到此结束
Loading...