当前位置:主页 > 产品展示 > 天平仪器系列 >

产品展示

Products Classification

署理模式实现方式及优缺点对比|亚美体育app下载

  • 产品时间:2021-10-01 01:06
  • 价       格:

简要描述:作者:爱宝物丶泉源:https://my.oschina.net/zhangxufeng/blog/1633187 署理模式最典型的应用就是AOP,本文联合主要解说了署理模式的几种实现方式:静态署理和动态署理,这里动态署理又可以分为jdk署理和Cglib署理,另外,本文也对这几种署理模式的优缺点举行了对比。署理,顾名思义,即取代被请求者来处置惩罚相关事务。...

详细介绍
本文摘要:作者:爱宝物丶泉源:https://my.oschina.net/zhangxufeng/blog/1633187 署理模式最典型的应用就是AOP,本文联合主要解说了署理模式的几种实现方式:静态署理和动态署理,这里动态署理又可以分为jdk署理和Cglib署理,另外,本文也对这几种署理模式的优缺点举行了对比。署理,顾名思义,即取代被请求者来处置惩罚相关事务。

亚美体育

作者:爱宝物丶泉源:https://my.oschina.net/zhangxufeng/blog/1633187 署理模式最典型的应用就是AOP,本文联合主要解说了署理模式的几种实现方式:静态署理和动态署理,这里动态署理又可以分为jdk署理和Cglib署理,另外,本文也对这几种署理模式的优缺点举行了对比。署理,顾名思义,即取代被请求者来处置惩罚相关事务。署理工具一般会全权署理被请求者的全部只能,客户会见署理工具就像在会见被请求者一样,虽然署理工具最终还是可能会会见被请求者,可是其可以在请求之前或者请求之后举行一些分外的事情,或者说客户的请求不正当,直接拒绝客户的请求。如下图所示为署理模式的一份简图:署理模式的角色:ISubject:署理者与被署理者配合实现的接口,可以明白为需要署理的行为;SubjectImpl:被署理者,其为具有某种特定行为的实现者;SubjectProxy:署理者,其会全权署理SubjectImpl所具有的功效,在实现其功效的基础上做一些分外的事情;Client:客户端,客户端会见署理者与会见被署理者具有类似的效果,其无法区分会见的是署理者还是被署理者。

1. 静态署理 静态署理模式也即上图中形貌的这种模式,从图中可以看出,SubjectProxy生存一个ISubject实例,当客户端挪用SubjectProxy的request()方法时,其除了做分外的事情之外,还会挪用ISubject实例的request()方法。如下是这三个类的一个简朴实现: 可以看到,署理工具在挪用被署理工具的方法之前和之后都打印了相关的语句。如下是客户端请求示例:public class Client { @Test public void testStaticProxy() { ISubject subject = new SubjectImpl(); ISubject proxy = new SubjectProxy(subject); proxy.request(); }}运行上述用例,可获得如下效果:before safety check.request SubjectImpl.after safety check. 从客户端会见方式可以看出,客户端获取的是一个实现ISubject接口的实例,其在挪用的request()方法实际上是署理工具的request()方法。这种署理方式称为静态署理,而且这种署理方式也是效率最高的一种方式,因为所有的类都是已经编写完成的,客户端只需要取得署理工具而且执行即可。

静态署理虽然效率较高,但其也有不行制止的缺陷。可以看到,客户端在挪用署理工具时,使用的是署理工具和被署理工具都实现的一个接口,我们可以将该接口明白为界说了某一种业务需求的实现规范。如果有另外一份业务需求(如举行数据修改),其与当前需求并行的,没有交集的,可是其在举行正常业务之外所做的宁静验证事情与当前需求是一致的。

如下是我们举行该数据修改业务的实现代码:如下是客户端代码:public class Client { @Test public void testStaticProxy() { ISubject subject = new SubjectImpl(); ISubject proxy = new SubjectProxy(subject); proxy.request(); IUpdatable updatable = new UpdatableImpl(); IUpdatable proxy = new UpdatableProxy(updatable); proxy.update(); }} 可以看到,要实现相同的工具署理功效(宁静验证),静态署理方式需要为每个接口实现一个署理类,而这些署理类中的代码险些是一致的。这在大型系统中将会发生很大的维护问题。

2. 动态署理① jdk署理 所谓的jdk署理指的是借助jdk所提供的相关类来实现署理模式,其主要有两个类:InvocationHandler和Proxy。在实现署理模式时,只需要实现InvocationHandler接口即可,如下是实现该接口的一个示例: 如下是客户端挪用方式:public class Client { @Test public void testDynamicProxy() { ISubject subject = new SubjectImpl(); ISubject proxySubject = (ISubject) Proxy.newProxyInstance(Client.class.getClassLoader(), new Class[]{ISubject.class}, new SafetyInvocationHandler(subject)); proxySubject.request(); IUpdatable updatable = new UpdatableImpl(); IUpdatable proxyUpdatable = (IUpdatable) Proxy.newProxyInstance(Client.class.getClassLoader(), new Class[]{IUpdatable.class}, new SafetyInvocationHandler(updatable)); proxyUpdatable.update(); }}。


本文关键词:亚美体育app下载,署理,模式,实现,方式,及,优缺点,对比,亚美

本文来源:亚美体育-www.bj-ek.com.cn

 


产品咨询

留言框

  • 产品:

  • 留言内容:

  • 您的单位:

  • 您的姓名:

  • 联系电话:

  • 常用邮箱:

  • 详细地址:


推荐产品

Copyright © 2004-2021 www.bj-ek.com.cn. 亚美体育科技 版权所有 备案号:ICP备74770642号-8

在线客服 联系方式 二维码

服务热线

0169-445882886

扫一扫,关注我们