1 什么是动态代理
在程序运行时,对原有对象的功能进行增强
2 动态代理的应用场景
解决POST请求乱码问题
敏感词汇的过滤
3 开发步骤
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