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);
}
}
|
|