Geek

博客园 首页 新随笔 联系 订阅 管理

代理模式能将代理对象与真实被调用的目标对象分离

一定程度上降低了系统的耦合度,扩展性好

保护目标对象

增加目标对象

代理模式的缺点:

代理模式会造成 系统设计中类的数目增加

开客户端和目标对象增加一个代理对象,会造成请求处理速度会变慢

 

代理模式的种类:

  1. 静态代理
  2. 动态代理(jdk只能代理接口)
  3. CGLIB代理(不要使用 final)

 

Spring 的代理是 ,当Bean有实现接口时,Spring 使用 jdk的动态代理

当bean没有实现接口时,spring 使用 cglib

可以强制使用 cglib

<aop:aspectj-autoproxy proxy-target-class="true"/>

 

jdk 的动态代理速度会 比 cglib速度要快

和动态代理有点相似的设计模式: 装饰者模式、适配器模式

装饰者主要体现在给对象添加行为

而 代理主要是体现在控制 访问,通过设置代理源 加强目标对象

适配器模式: 考虑对象和改变对象的接口

 

使用Proxy角色,使得耗时处理(生成实例)推迟。
在大型系统的初始化过程中,存在大量耗时处理,如果初始化暂时不会使用的功能,会使启动时间延长,所以使用代理模式,先初始化需要使用的功能

当遇到代理人不会解决的问题时,还是会"转交"给本人——"委托"(现实世界中是本人委托给代理人,在设计模式中却相反)

https://www.cnblogs.com/ealenxie/p/9896269.html

静态代理和 装饰器模式真的很像

但是他们的侧重点又不一样,所以设计模式本身就是一种思想表达的形式

因为看问题的角度不同,那么对这个问题的解释也不一样

所以设计模式很多时候是有交叉甚至重合的

也许我只是为了达到某种目的而采用一种设计模式,但是可能不知不觉就加进来其他的设计模式

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2020-03-25 20:55  .geek  阅读(201)  评论(0编辑  收藏  举报