软件中的代理

在客户和目标类(目标类是指能实现目标功能的类)之间增加代理,

1.可以扩展目标类的功能。

2.隔离客户和目标的直接依赖关系。

3.代理和目标类要实现相同的接口,来保证目标类提供的功能,代理都能够提供,只是功能上有增强。

4.使用工厂模式和配置文件方式,随时可以修改客户是依赖于代理,还是依赖于目标类,或者依赖于其他新的代理。


代理和目标类之间的关系可以是依赖关系,也可以是继承关系,(其实还可以把目标类中的功能全部重新实现一边,只是这种方法基本不用,因为代码不易修改)这两种实现方法都可以。他们的优劣是什么呢??


在java虚拟机运行时期,动态生成的类,叫做动态类。如果这个类是用来做为代理类的,那么就叫动态代理类。 JVM 生成的动态类必须实现一个或者多个接口,也就是 JVM 对于动态生成类,采用接口这个标准,这也符合了面向对象设计原则:依赖接口编程。


CGLIB 可以让虚拟机动态生成某个类的子类,所以如果目标类没有实现借口,要动态生成这个类的代理类,就只能使用继承关系和 CGLIB 来实现。


代理增强部分的功能,可以放在调用目标方法之前,之后,之前之后都加,还有就可以放在 ry 目标方法后 的 catch 和 finally 代码块中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值