静态代理可以在真实主体前后加上一些额外的信息,动态代理的用处求解释说明。
动态代理在使用时还是要在之前声明要使用的类,在传递给代理的方法,这样不是
没有什么意义吗,还不如直接使用静态代理呢?
好像用静态代理更好一些啊
package proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Collection;
public class ProxyTest {
public static void main(String[] args) {
Student s = new Student();//这里先要声明一个要代理的对象。
Person p = (Person) ProxyTest.getProxy(s, new MyAdvice());// 动态代理一个类:Student
p.setName("shidayong");
System.out.println(p.getName());
}
public static Object getProxy(final Object obj, final Advice adv) {//参数为动态代理的类对象及额外的内容。
Object proxy = Proxy.newProxyInstance(obj.getClass().getClassLoader(),
obj.getClass().getInterfaces(),
new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method,
Object[] args) throws Throwable {
// System.out.println("+++++++++++++++++++++++++++++++++++");
adv.before(method);
Object ob = method.invoke(obj, args);
// System.out.println("-----------------------------------");
adv.after(method);
return ob;
}
});
return proxy;
}
}
|