黑马程序员技术交流社区
标题:
【广州校区】【原创】 Java动态代理
[打印本页]
作者:
新君
时间:
2019-9-3 20:56
标题:
【广州校区】【原创】 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
);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2