黑马程序员技术交流社区
标题:
Java动态代理代码实现
[打印本页]
作者:
经济
时间:
2015-6-6 12:02
标题:
Java动态代理代码实现
<p><strong>//接口类代码如下:</strong></p><p>package com.dyn.itheima.test11;
public interface UserDao {
// 添加数据
public void add(String data);
// 删除数据
public void delete(String data);
}</p><p><strong>//接口类实现代码如下:</strong></p><p>package com.dyn.itheima.test11;</p><p>public class UserImp implements UserDao {</p><p> @Override
public void add(String data) {
// TODO Auto-generated method stub
System.out.println(data + " 数据成功!");</p><p> }</p><p> @Override
public void delete(String data) {
// TODO Auto-generated method stub
System.out.println(data + " 数据成功!");</p><p> }</p><p>}
<strong>// InvocationHandler 接口实现代码如下:</strong></p><p>package com.dyn.itheima.test11;</p><p>import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;</p><p>public class MyInvocationHandler implements InvocationHandler {</p><p> // 构建代理对象
private Object target;</p><p> // 利用构造函数接收要代理的对象
public MyInvocationHandler(Object target) {
this.target = target;
}</p><p> @Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
// 动态代理开始
System.out.println("动态代理开始!");
// 通过反射调用原方法
Object result = method.invoke(target, args);
// 动态代理结束
System.out.println("动态代理结束!");
return result;
}
}
<strong>//测试类代码如下:</strong></p><p><strong></strong>package com.dyn.itheima.test11;</p><p>import java.lang.reflect.Proxy;</p><p>public class DynamicProxy {</p><p> public static void main(String[] args) {</p><p> // 创建用户对象
UserDao user = new UserImp();
// 创建调度处理,接收被代理的对象
MyInvocationHandler handler = new MyInvocationHandler(user);
// 创建代理对象
UserDao proxy = (UserDao) Proxy.newProxyInstance(user.getClass()
.getClassLoader(), user.getClass().getInterfaces(), handler);
//调用代理的方法
proxy.add("add");
proxy.delete("delete");
}
}
</p>
复制代码
由于上面代码详细信息,我在我的博客(http://blog.csdn.net/u012193715)中写过,现在就把主要代码粘下,还望大家积极讨论,
作者:
pp7803515
时间:
2015-6-6 12:10
我会去博客看一下的。。:loveliness:
作者:
经济
时间:
2015-6-6 13:13
pp7803515 发表于 2015-6-6 12:10
我会去博客看一下的。。
没想到发上去效果成这样了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2