代理模式讲解

匿名 (未验证) 提交于 2019-12-02 23:38:02
 我们现在来学习代理模式,我们首先看一下代理模式的定义与类型,他的定义是说,为其他对象提供一种代理,以控制对这个对象的  访问,代理对象在客户端和目标对象之间呢,起到一个中介的作用,那这句话如何理解,就和我们租房子是一样的,假设我们找中介,  租房子,然后呢租那种全托管的房子,最后出租出来的房子呢,是房东,房东呢,就是目标对象,那水电费结算,都是代理类来做的,  代理类就是中介,但是我们直接可以和代理,也就是和租房中介来签租房合同,不需要和房东直接接触,也就是中介代理房东,  来和我们签这个合同,并且他对目标对象进行了一个增强,例如在签合同之前,先草拟合同,签完合同之后呢,还进行了一些水电费  核算的,这些工作,那这两点可以理解成,租房子的一些方法,对他的一个增强,那你们学Spring都用过AOP,那AOP就是面向切面编程,  OOP就是面向对象编程,那AOP里面的before和after,就可以理解成before就是草拟合同,after就是水电费结算,而要增强的目标方法呢,  正是租房子这种行为,那他的类型是结构型 

 然后我们来看一下代理的适用场景,首先保护目标对象,例如租房子,我们可能连房东面都没见过,  房东长什么样我们都不知道,然后呢增强目标对象,那增强目标对象呢,这里面范围也比较大,比如增强  目标对象的一个租房子,这个行为方法,也是增强目标对象

  那我们可以看一下代理对象的优点有哪些呢,首先代理模式能将代理对象与真实被调用的目标对象进行分离,  这个呢还是很好理解的,然后第二点,在一定程度上降低了系统的耦合度,扩展性比较好,第三点保护目标对象,  那因为代理模式,在客户端和目标对象之间,起到一个中介作用,代理模式可以拿到真实对象的引用,而客户端呢,  和代理类进行交互,然后就是增强目标对象 

 例如before和after,我们看一下代理模式有哪些缺点呢,第一条很容易理解,代理模式会造成系统设计中类的增加,  如果我们使用代理模式,肯定要添加一些代理类,这个就导致类的数目增加,然后在客户单和目标对象之间,增加了一个  代理对象,会造成请求速度变慢,当然这个是根据具体的业务场景来看,包括进行压测,还有大批量的测试,多线程的并发,  等等,这个和系统的应变也是有关的,那这个呢也很好理解,例如增强了目标对象的方法,执行的代码多了,从理论上来说,  相对速度肯定会变慢,然后呢就是增加了系统的复杂度,那我们实现了代理模式,需要额外的工作,那有些代理模式的实现,  非常复杂,自然增加了系统的复杂度

文章来源: https://blog.csdn.net/Leon_Jinhai_Sun/article/details/91041988
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!