欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java动态代理的示例详解

程序员文章站 2024-03-26 17:14:35
定义动态代理指的是,代理类和目标类的关系在程序运行的时候确定的,客户通过代理类来调用目标对象的方法,是在程序运行时根据需要动态的创建目标类的代理对象。分类jdk动态代理cglib动态代理案例需求苹果公...

定义

动态代理指的是,代理类和目标类的关系在程序运行的时候确定的,客户通过代理类来调用目标对象的方法,是在程序运行时根据需要动态的创建目标类的代理对象。

分类

jdk动态代理

cglib动态代理

案例

需求

苹果公司通过苹果代理商来卖手机

方案一:jdk动态代理

定义抽象接口

定义目标类实现接口,重写接口方法

定义代理类

定义测试类

查看测试结果

Java动态代理的示例详解

方案二:cglib动态代理

定义目标类

定义代理工厂,用来获取代理类

定义测试类

查看测试结果

Java动态代理的示例详解

分析

首先可以看到不管是jdk动态代理,还是cglib动态代理,实现的效果和静态代理是一模一样的,都实现了功能的扩展。但是两种动态代理还是有些不同的,其中jdk动态代理需要目标对象实现接口,但是cglib动态代理不需要,因为他是在内存中构建一个子类对象,从而实现对目标对象的功能扩展。

总结

通过案例,我们了解了代理模式的几种实现方式,下面我们总结下该模式:

优势:

  • 代理模式在客户端和目标对象之间起到了一个中介和保护的作用
  • 代理对象可以对目标对象进行功能的扩展和业务的扩展,增强目标对象
  • 代理模式可以将客户端和目标对象分离,在一定程度上降低了系统的耦合度

劣势:

  • 请求需要经过代理对象,会导致处理速度变慢
  • 因为会有大量的代理对象产生,会增加系统的复杂度

到此这篇关于java动态代理的示例详解的文章就介绍到这了,更多相关java 动态代理内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!