A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 经济 中级黑马   /  2015-6-6 12:02  /  422 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. <p><strong>//接口类代码如下:</strong></p><p>package com.dyn.itheima.test11;

  2. public interface UserDao {

  3.         // 添加数据
  4.         public void add(String data);

  5.         // 删除数据
  6.         public void delete(String data);
  7. }</p><p><strong>//接口类实现代码如下:</strong></p><p>package com.dyn.itheima.test11;</p><p>public class UserImp implements UserDao {</p><p> @Override
  8. public void add(String data) {
  9.   // TODO Auto-generated method stub
  10.   System.out.println(data + " 数据成功!");</p><p> }</p><p> @Override
  11. public void delete(String data) {
  12.   // TODO Auto-generated method stub
  13.   System.out.println(data + " 数据成功!");</p><p> }</p><p>}
  14. <strong>// InvocationHandler 接口实现代码如下:</strong></p><p>package com.dyn.itheima.test11;</p><p>import java.lang.reflect.InvocationHandler;
  15. import java.lang.reflect.Method;</p><p>public class MyInvocationHandler implements InvocationHandler {</p><p> // 构建代理对象
  16. private Object target;</p><p> // 利用构造函数接收要代理的对象
  17. public MyInvocationHandler(Object target) {
  18.   this.target = target;
  19. }</p><p> @Override
  20. public Object invoke(Object proxy, Method method, Object[] args)
  21.    throws Throwable {
  22.   // 动态代理开始
  23.   System.out.println("动态代理开始!");
  24.   // 通过反射调用原方法
  25.   Object result = method.invoke(target, args);
  26.   // 动态代理结束
  27.   System.out.println("动态代理结束!");
  28.   return result;
  29. }
  30. }
  31. <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>  // 创建用户对象
  32.   UserDao user = new UserImp();
  33.   // 创建调度处理,接收被代理的对象
  34.   MyInvocationHandler handler = new MyInvocationHandler(user);
  35.   // 创建代理对象
  36.   UserDao proxy = (UserDao) Proxy.newProxyInstance(user.getClass()
  37.     .getClassLoader(), user.getClass().getInterfaces(), handler);
  38.   //调用代理的方法
  39.   proxy.add("add");
  40.   proxy.delete("delete");
  41. }
  42. }

  43. </p>
复制代码
由于上面代码详细信息,我在我的博客(http://blog.csdn.net/u012193715)中写过,现在就把主要代码粘下,还望大家积极讨论,


2 个回复

倒序浏览
我会去博客看一下的。。:loveliness:
回复 使用道具 举报
pp7803515 发表于 2015-6-6 12:10
我会去博客看一下的。。

没想到发上去效果成这样了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马