import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class FactoryDao {
@SuppressWarnings("unchecked")
public static UserDao getUserDaoImpl(UserDao dao) throws Exception {
Class proxyClass = Proxy.getProxyClass(dao.getClass().getClassLoader(),
dao.getClass().getInterfaces());
Constructor constructor = proxyClass
.getConstructor(InvocationHandler.class);
UserDao userdaoProxy = (UserDao) constructor
.newInstance(new InvocationHandler() {
public Object invoke(Object proxy, Method method,
Object[] args) throws Throwable {
if ("delete".equals(method.getName())) {
System.out.println("您调用了delete方法:权限验证完毕");
}
UserDaoImpl dao = new UserDaoImpl();
return method.invoke(dao, args);
}
});
return userdaoProxy;
}
}