Java中的反射机制(初学)

来源:互联网 发布:都玩网络 编辑:程序博客网 时间:2024/06/05 22:33

      Java中的代理应该说其实就是在原来的接口编程基础上进行了“封装”,在原来需要返回一个纯接口的地方,换成了一个代理,这个代理除了能够完成原来的接口的功能之外还能完成其他的一些工作,这样我们看到的就是:最前面应用层的调用是不变的,还是根据后面返回的接口对象直接调用,后面的业务逻辑也是不变的,还是原来的那种实现接口然后自己定义业务逻辑,所以最终需要变化的就是返回接口对象的那个过程,我们所谓的其他工作也是在这个过程中完成的。首先是产生一个需要做其他辅助工作的类,根据需要会有各种辅助功能函数,实现InvocationHandler接口,实现接口函数public Object invoke(Object arg0, Method arg1, Object[] arg2) throws Throwable,在这个接口函数中可以调用自己写的各种辅助功能函数,最终实现原来接口中的函数的是Object obj = arg1.invoke(isum, arg2);其中obj就是函数的返回值,将这个值返回完成了代理对原函数的调用
public Object invoke(Object arg0, Method arg1, Object[] arg2) throws Throwable {
             print();
             Object obj = arg1.invoke(isum, arg2);
             return obj;
}

public void print() {
             System.out.println("Start logging......!");
}
同时也实现了在调用之前(或者之后)做些其他工作的功能。
      简单的来说就是加上代理以后,不管是什么样的请求,在都需要经过代理才能通过,当通过接口调用函数的时候都会到代理中去执行invoke函数,这个函数中如果没有调用其他的函数的话那就是直接调用接口指定的那个函数。比如说,在外面使用代理生成了一个接口Inter inter;然后希望调用这个接口中的函数update,那么inter.update()的时候就会自动到invoke函数中,如上面的程序就会在执行update之前执行print()函数。

 

原创粉丝点击