java代理模式和注释[归纳].pdf

想预览更多内容,点击预览全文

申明敬告:

本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己完全接受本站规则且自行承担所有风险,本站不退款、不进行额外附加服务;如果您已付费下载过本站文档,您可以点击这里二次下载

文档介绍

代理模式 1. 普通的代理 首先设置一个接口 真正的实现类 一个简单的代理类 实现

2. 改进的代理 之前的代理比较简单,但是存在一个很大的问题 : 每一个真正的实现类都必须有一个对

应的代理类来进行代理, 这样每继承一次这个接口, 就必须写一个代理类。 我们可以用这种

方式解决: 代理类改为: 实现 新加入一个真正的实现类 实现

3. 动态代理 虽然改进的代理在一定程度上比第一种好,当只可以对某一个接口使用,也就是说当接

口很多时,必须每个接口写一个相应的代理类,此时就引入了动态代理。 所谓 Dynamic Proxy 是这样一种 class :它是在运行时生成的 class ,在生成它时

你必须提供一组 interface 给它,然后该 class 就宣称它实现了这些 interface 。你当

然可以把该 class 的实例当作这些 interface 中的任何一个来用。 当然啦,这个 Dynamic

Proxy 其实就是一个 Proxy ,它不会替你作实质性的工作,在生成它的实例时你必须提供

一个 handler ,由它接管实际的工作。 建立动态代理类: 实现 其他接口也可以用此类 重新定义一个接口 实现类 实现 虽然重新定义了一个接口,但是没有写其他的代理类,还是使用之前的代理类,

可以为此写一个工厂,用来返回接口

传入实现类的 Class 类,就会返回一个 Object ,此 Object 就是这个实现类被代理之后

真实执行的 Object

不知你发觉没有,这是否有点像 AOP 技术

4. CGLIB 进行代理 上述的代理都属于 jdk 的代理( proxy ),需要实现一个接口,这样每一个要被代理的

实现类都必须实现一个接口,而 cglib 的代理,可以使用字节码技术,在运行期动态生成

class 。例: 实现类 ( 要被代理的类 ) 模仿 Service 层

最近下载