您的位置:首页 > 编程语言 > Java开发

9、JDK的动态代理

2016-07-14 16:53 411 查看
1、以动态代理的方式,增强方法的功能

2、IUserDao.java接口代码

public interface IUserDao {

public void add();

public void delete();
}


3、UserDao.java实现类的代码

public class UserDao implements IUserDao {

@Override
public void add() {
System.out.println("add...");
}

@Override
public void delete() {
System.out.println("delete...");
}

}


4、关于动态代理的测试代码

public class ProxyTest {
@Test
public void test01() {
// 要被代理的对象
UserDao target = new UserDao();
UserDao iUserDao = (UserDao) Proxy.newProxyInstance(
ProxyTest.class.getClassLoader(),
UserDao.class.getInterfaces()/* 被代理对象实现的接口,返回的代理应该为接口类型 */,
new MyHandler<UserDao>(target)/* 被代理对象,应该为接口的实现类 */{
});
iUserDao.add();

}

class MyHandler<T> implements InvocationHandler {
private T targrt;

public MyHandler(T targrt) {
this.targrt = targrt;
}

@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object obj = null;
try {
System.out.println("start...");
obj = method.invoke(targrt, args);
System.out.println("end...");
} catch (Exception e) {
}
return obj;
}

}
}


5、测试的输出结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息