龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

设计模式研究--Proxy Model

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
这是一个动态代理的例子,今天时间比较晚了,抽时间我会做一下分析. package Javapatterns; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.L

  这是一个动态代理的例子,今天时间比较晚了,抽时间我会做一下分析.

  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");
   }
  }
  


  
精彩图集

赞助商链接