ABCABE 2013-02-02 14:49
浏览 213
已采纳

Java:关于动态代理

public Object invoke(Object proxy,Method method,Object[] args) throws Throwable
{
System.out.println("调用"+method.toString()+"之前");
Object o = method.invoke(proxyobj,args);
System.out.println("调用"+method.toString()+"之后");
return o;
}
这样执行原代理的时候,都会由动态代理在该方法执行之前和之后各输出一句话,但是从这个例子看来,代理对象所增加的处理是一样的,实际的开发中或者框架中是用if else 或switch来判断方法名来判断具体增加哪些操作码?

:)

  • 写回答

1条回答 默认 最新

  • diaozhanming 2013-02-02 20:36
    关注

    这个的确是一个good question,很难有一个特定的答案。在一个项目中代理的使用,基本都是在一个通用的功能上,就是所谓的切面,切入点的概念,这些时候这些方法都有共性。就目前的程序设计中,大量的使用annotation,在动态代理中基本都是捕捉annotation来进行这些操作。如果真的只有某个方法需要进行如何楼主代码中的判断,这个时候代理就没有任何优势了,完全可以再程序代码中直接进行操作。不过我的这个还是解释不了一些细节问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?