软件中的代理

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

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

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

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

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

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

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

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

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

来源:楼上的大叔阿

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2013年6月4日
下一篇 2013年6月5日

相关推荐