静态代理和动态代理的区别

Posted eddyer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态代理和动态代理的区别相关的知识,希望对你有一定的参考价值。

代理:结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题

按照代理的创建时期,代理类可以分为两种: 

静态:由程序员创建代理类或特定工具自动生成源代码再对其编译。在程序运行前代理类的.class文件就已经存在了。

动态:在程序运行时运用反射机制动态创建而成。(InvocationHandler 的应用)

静态代理缺点:

1)代理类和委托类实现了相同的接口,代理类通过委托类实现了相同的方法。这样就出现了大量的代码重复。如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需要实现此方法。增加了代码维护的复杂度。

2)代理对象只服务于一种类型的对象,如果要服务多类型的对象。势必要为每一种对象都进行代理,静态代理在程序规模稍大时就无法胜任了。如上的代码是只为UserManager类的访问提供了代理,但是如果还要为其他类如Department类提供代理的话,就需要我们再次添加代理Department的代理类。

 

https://www.cnblogs.com/baizhanshi/p/6611164.html

以上是关于静态代理和动态代理的区别的主要内容,如果未能解决你的问题,请参考以下文章

静态代理和动态代理的区别

Java静态代理和动态代理的区别

关于动态代理和静态代理的区别

静态代理和动态代理的区别,什么场景使用?

Java中动态代理的两种方式JDK动态代理和cglib动态代理以及区别

静态代理和动态代理的区别