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、测试的输出结果