• Java核心技术代理


      本文由广州疯狂软件java培训分享:

      代理模式:

      代理模式支持将方法中的某些操作从实际的对象中分离出来,通过它的代理类来实现这些操作。

      代理类:

      代理类可以创建全新的类,能够实现指定的接口。

      创建一个代理对象,需要使用Proxy类的静态方法

      Object newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler handler)。

      loader 类加载器。

      interfaces 数组元素是代理对象需要实现的接口。

      handler 调用处理器:

      调用处理器是实现了实现了InvocationHandler接口的类对象,这个接口中只有一个invoke方法。无论何时调用代理对象的方法,调用处理器的invoke方法都会被调用。

      Object invoke(Object proxy, Method method, Object[] args);

      proxy proxy实例

      method proxy实例中的method方法

      args method方法中的参数

      import java.lang.reflect.InvocationHandler;

      import java.lang.reflect.Method;

      import java.lang.reflect.Proxy;

      import java.util.Arrays;

      public class Main {

      public static void main(String[] args) {

      final int MAXN = 1000;

      Object[] objs = new Object[MAXN];

      for (int i = 0; i < MAXN; i++) {

      objs[i] = Proxy.newProxyInstance(null, new Class[] { Comparable.class },

      new TraceHandler(i));

      }

      Arrays.binarySearch(objs, 123);

      }

      }

      class TraceHandler implements InvocationHandler {

      private Object obj;

      public TraceHandler(Object obj) {

      this.obj = obj;

      }

      @Override

      public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

      System.out.println("******************");

      System.out.println("class: " + proxy.getClass());

      System.out.println("obj: " + obj.toString());

      System.out.println("method: " + method.getName());

      System.out.println("args: " + Arrays.toString(args));

      return method.invoke(obj, args);

      }

      }

      疯狂软件教育中心依托开发团队的强大技术实力,把企业最新技术融入实训课程,打造金牌的品质,才能给予学员黄金的未来,疯狂软件凭借过硬的技术实力与丰富的项目开发经验,赢得了社会的肯定。疯狂软件Java培训师资力量强大,课程内容深入,为学员高薪就业做了很好的铺垫,拥有丰富就业指导经验的就业团队也成为了学员高薪就业的先天优势。地址:广州天河区车陂沣宏大厦3楼。

  • 相关阅读:
    Vector成员为指针时要注意的问题
    (转)C++中的static关键字的总结
    (转)内联(inline)函数与虚函数(virtual)的讨论
    基类类型和派生类型之间的转换以及虚函数
    (转) vector的reserve和resize
    关于函数返回值的一些见解
    (转)感受异或的神奇
    一个mysql不解的问题
    获取本机TCP连接状态信息
    (转)socket的SYN_RECV和ESTABLISHED状态
  • 原文地址:https://www.cnblogs.com/gojava/p/3600457.html
Copyright © 2020-2023  润新知