博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
静态代理&动态代理
阅读量:3958 次
发布时间:2019-05-24

本文共 887 字,大约阅读时间需要 2 分钟。

代理模式

代理(Proxy)是一种设计模式,通过代理对象访问目标对象.

好处  可在目标对象实现的基础上,增加额外的功能,即提高扩展性

编程思想  不要随意去修改已写好的代码或者方法,如需修改,可通过代理的方式来扩展该方法

举例说明代理作用  假设我们想邀请一位明星,那么并不是直接联系明星,而是联系明星的经纪人.明星就是一个目标对象,他只要负责活动中的节目,而其他琐碎的事情就交给他的代理人(经纪人)来解决.这就是代理思想在现实中的一个例子

用图表示如下:

代理模式的关键点是:代理对象与目标对象.代理对象是对目标对象的扩展,并会调用目标对象

静态代理(类似于装饰者模式)

静态代理在使用时,代理对象与目标对象要实现相同的接口,然后通过调用相同的方法来调用目标对象的方法

静态代理总结:

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

缺点  代理对象需要与目标对象实现一样的接口,会产生很多代理类.同时,接口增加方法,目标对象与代理对象都要维护

动态代理

动态代理特点

代理对象,不需要实现接口
代理对象的生成,是利用JDK的API,动态的在内存中构建代理对象(需要我们指定创建代理对象/目标对象实现的接口的类型)
动态代理也叫做,JDK代理,接口代理

JDK中生成代理对象的API

代理类所在包:java.lang.reflect.Proxy
JDK实现代理只需要使用newProxyInstance方法,但是该方法需要接收三个参数,完整的写法是:

static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces,InvocationHandler h )

注意该方法是在Proxy类中是静态方法,且接收的三个参数依次为:

ClassLoader loader 指定目标对象使用类加载器

Class<?>[] interfaces 目标对象实现的接口的类型

InvocationHandler h 事件处理,执行目标对象方法时,触发事件处理器方法,把执行目标对象的方法作为参数传入

转载地址:http://qpazi.baihongyu.com/

你可能感兴趣的文章
浏览器低成本实现免手提的用户体验,使用人脸、手势、姿态追踪 | Mix群聊
查看>>
这个世界上肯定有另一个我,做着我不敢做的事,过着我想过的生活 | MixAI 知识库 No.70...
查看>>
表情包数据挖掘 | Mix群聊
查看>>
如何阅读科研论文
查看>>
理解本真的REST架构风格
查看>>
10款免费且开源的项目管理工具
查看>>
java调用javascript :js引擎rhino
查看>>
asp 中常用的文件处理函数
查看>>
ADO中sqlserver存储过程使用
查看>>
Linux KernelTech版FAQ 1.0
查看>>
ntfs分区iis故障的解决
查看>>
个人创业“六大死穴”
查看>>
最重要的 12个 J2EE 最佳实践
查看>>
通过Java Swing看透MVC设计模式
查看>>
Java 理论与实践: 关于异常的争论
查看>>
编写高效的线程安全类
查看>>
提高Java代码可重用性的三个措施
查看>>
编写跨平台Java程序注意事项
查看>>
富人和穷人的12个经典差异
查看>>
java 注意事项[教学]
查看>>