美文网首页
代理模式之静态代理与动态代理

代理模式之静态代理与动态代理

作者: 忘尘And | 来源:发表于2020-05-08 18:19 被阅读0次

直奔主题,
静态代理
由程序员创建或工具生成代理类的源码,再编译代理类。在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了

  • 优点

业务类只需要关注业务逻辑本身,保证了业务类的重用性。这是代理的共有优点。

  • 缺点

1.代理对象的一个接口只服务于一种类型的对象,如果要代理的方法很多,势必要为每一种方法都进行代理,静态代理在程序规模稍大时就无法胜任了。
2.如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需要实现此方法。增加了代码维护的复杂度。

动态代理
动态代理类的源码是在程序运行期间由JVM根据反射等机制 动态的生成,所以不存在代理类的字节码文件。代理类和委托类的关系是在程序运行时确定。

  • 优点

动态代理与静态代理相比较,最大的好处是接口中声明的所有方法都被转移到调用处理器一个集中的方法中处理(InvocationHandler.invoke)。这样,在接口方法数量比较多的时候,我们可以进行灵活处理,而不需要像静态代理那样每一个方法进行中转。

  • 缺点

Proxy 已经设计得非常优美,但是还是有一点点小小的遗憾之处,那就是它始终无法摆脱仅支持 interface 代理的桎梏,因为它的设计注定了这个遗憾。回想一下那些动态生成的代理类的继承关系图,它们已经注定有一个共同的父类叫 Proxy。Java 的继承机制注定了这些动态代理类们无法实现对 class 的动态代理,原因是多继承在 Java 中本质上就行不通。

参考链接
https://blog.csdn.net/ikownyou/article/details/53081426

相关文章

  • Spring之代理模式

    九、代理模式 目录:静态代理、动态代理AOP的底层机制就是动态代理。代理模式分为静态代理和动态代理。接触aop之前...

  • 带你初识Java的代理模式

    Spring AOP是基于动态代理设计模式实现的,相对的就有静态代理 动态代理和静态代理 静态代理 对于静态代理,...

  • 编程常用的设计模式

    动态代理和静态代理 静态代理 动态代理 静态代理与动态代理的区别 JDK中的动态代理和CGLIB 实现动态代理的方...

  • java代理模式

    代理模式分为动态代理和静态代理

  • Java设计模式之代理模式

    Java设计模式之代理模式 代理模式 静态代理 动态代理 为什么需要代理 通过代理,我们能够不用知道委托人是谁,而...

  • SpringAOP-jdk动态代理

    静态代理与动态代理 静态代理(如SpringAOP-代理模式中所示)的缺点代理目标的方法越多,代理所委托的方法就越...

  • 动态代理

    目录: 1.动态代理与静态代理的使用区别2.动态代理实现原理3.动态代理的使用场景 1.静态代理 代理模式给某一个...

  • Maven项目&Spring AOP基础(一)

    Spring AOP的底层机制就是动态代理。而代理模式又分为:静态代理、动态代理。 静态代理的角色分为:抽象角色 ...

  • 设计模式之代理

    设计模式之代理模式 一、定义 在Java中代理的实现一般分为三种:JDK静态代理、JDK动态代理以及CGLIB动态...

  • 设计模式

    单例模式 模板方法模式 工厂模式 代理模式 静态代理 JDK动态代理

网友评论

      本文标题:代理模式之静态代理与动态代理

      本文链接:https://www.haomeiwen.com/subject/odhqnhtx.html