首页 > 技术文章 > Java中的代理机制

ethan-37 2019-04-08 10:36 原文

Java的三种代理模式

代理模式是一种设计模式,提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。 
简言之,代理模式就是设置一个中间代理来控制访问原目标对象,以达到增强原对象的功能和简化访问方式。

1.静态代理

  静态代理的实现方式需要目标对象和代理对象实现同样的接口。

  优点:可以在不修改目标对象的前提下,扩展目标对象的功能。

  缺点:1.冗余:由于代理对象要实现与目标对象一致的接口,会产生过多的代理类。

     2.不易维护。一旦接口增加了方法,目标对象与代理对象都要进行修改。

2.动态代理

  动态代理通过avaAPI,Proxy类实现。并且目标对象必须要实现一个接口。

基于JDK的动态代理原理:主要是利用了Java的反射机制。

3.cglib代理

  通过cglib代理的方式,目标对象不需要实现接口,可以是一个单独的对象。

  cglib也叫子类代理, 是通过以目标对象子类(继承目标对象)的方式类实现代理

 

在Spring的AOP编程中:
如果加入容器的目标对象有实现接口,用JDK代理
如果目标对象没有实现接口,用Cglib代理

推荐阅读