静态代理和动态代理

来源:互联网 发布:网络潮语大全2016霸气 编辑:程序博客网 时间:2024/06/06 18:14
相信不少人求职或跳槽,都会被问到动态代理,之前也一直是我的隐痛,很怕被问,也是活该,明知不足却迟迟没有将其弥补,还好我花了一点时间揭开其神秘的面纱。。。
         静态代理,缺点极多,提供了一种思想而已,代理类也实现目标接口即可。
         动态代理,有两种实现方式 jdk和cglib,大同小异,这里以jdk实现动态代理为例,但是这两种方式缺点也很明显,目前来看最好的动态代理的实现当属spring的aop,它实现了松耦合。
        下面来看下类图:

         类图比较简单, 一个目标接口,一个目标类,一个代理类, 代理类和目标类实现目标接口,代理类引入目标类。

1、目标接口

2、目标类


3、代理类


4、测试类

5、总结
    静态代理,一个目标类,就需要一个代理类,如果是几十个目标类,就会造成类膨胀,工作量也大,不利于开发。
    动态代理,多个目标类,可以共用一个代理类,但是还是有致命的缺点:如果invoke中的逻辑太过复杂,事物判断将会很困难,而且太过耦合。
    spring的aop则没有这些弊端。

原创粉丝点击