- <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)中写过,现在就把主要代码粘下,还望大家积极讨论,
|
|