这是一个动态代理的例子,今天时间比较晚了,抽时间我会做一下分析.
package javapatterns;
import java.lang.reflect.invocationhandler;
import java.lang.reflect.method;
import java.lang.reflect.proxy;
import java.util.list;
import java.util.vector;
/**
* proxy model 的研究
* <p>title:vectorproxy.java</p>
* <p>description:</p>
* <p>copyright:copyright (c) 2004 dsii,inc</p>
* <p>company:dsii,inc</p>
* @author morgan 2004-11-8
* @version 1.0
*/
public class vectorproxy implements invocationhandler {
private object proxyobj;
public vectorproxy(object obj) {
proxyobj = obj;
}
public static object factory(object obj) {
class cls = obj.getclass();
return proxy.newproxyinstance(
cls.getclassloader(),
cls.getinterfaces(),
new vectorproxy(obj));
}
public object invoke(object proxy, method method, object[] args)
throws throwable {
system.out.println("before calling " + method);
if (args != null) {
for (int i = 0; i < args.length; i++) {
system.out.println(args[i] + "");
}
}
object o = method.invoke(proxyobj, args);
system.out.println("after calling " + method);
return o;
}
public static void main(string[] args) {
list v = null;
v = (list) factory(new vector(10));
v.add("new");
v.add("york");
}
}
闽公网安备 35060202000074号