11 代理

p { margin-bottom: 0.21cm; }

代理类是 为已存在的多个具有相同接口的目标类的各个方法增加一些系统功能,例如 异常处理,日志,计算方法的的运行时间,事务管理,等等 这时候,就需要编写一个与目标类具有相同接口的代理类,代理类的每个方法调用目标类的相同方法,并在调用方法上加上系统功能的代码

 

使用工厂模式和配置文件的方式进行管理 ,不需要修改客服端程序,在配置文件中配置使用目标类,还是使用代理类,这样以后更容易切换,比如 想要日志功能时就配置代理类,这样增加系统功能很简单,以后运行一段时间后,又想去掉系统功能也很简单 很容易

 

交叉业务 事务, 日志的功能要贯穿到很多个模块中 这样的功能称为交叉业务

面向方面的编程 AOP(Aspect Oriented Program ) 交叉业务的编程即是面向方面编程 aop 的目标就是将交叉业务编程的模块发

 

代理技术就是解决面向方面编程的

 

即动态代理类 Jvm 可以在运行期间动态生成出类的字节码 这种动态生成的类往往被用作代理类 即动态代理类 Jvm 生成必须实现一个或多个接口 所以jvm 生成的动态类必须具有相同接口的目标类的代理.

 

CGLIB 库可以生成没有接口的代理类

 

代理类除了可以正常执行相应的方法外 还可以在代理方法的如下四个位置加上系统功能代码 :

  1. 调用目标方法之前

  2. 调用目标方法之后

  3. 调用目标方法前面和后面都有

  4. 处理异常中

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值