代理模式(Proxy)
2015-08-24 17:52 你吃不吃麦芽糖 阅读(193) 评论(0) 收藏 举报代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。
代理模式的一个极其简单的例子,但是它具有代理模式所要求的功能,设计师可以使用这个例子作为蓝本,在一个Vector(或者任何其他对象)被调用之前和之后做出有意义的操作。实现代码如下:
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
import java.lang.reflect.Method;
import java.util.*;
class VectorProxy implements InvocationHandler
{
private Object proxyobj;
public VectorProxy(Object obj)
{
this.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 Exception
{
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) throws Exception
{
List v = null;
v = (List)factory(new ArrayList());
v.add("New");
v.add("York");
}
}
浙公网安备 33010602011771号