免费的课程设计哪个网站有,购买云服务器,开发网站的项目背景描述,wordpress 清理插件代理官方原文翻译#xff1a;
给其他对象提供一个代理或者占位符#xff0c;来控制对这个对象的访问。
代理最核心的思想#xff1a;
在客户端和目标对象之间创建一个“中介”#xff0c;用于保护目标对象和增强目标对象
静态代理#xff1a;
该代理对象需要我们手动…代理官方原文翻译
给其他对象提供一个代理或者占位符来控制对这个对象的访问。
代理最核心的思想
在客户端和目标对象之间创建一个“中介”用于保护目标对象和增强目标对象
静态代理
该代理对象需要我们手动去创建并且一个代理对象只能服务于一种业务类型的对象。
当我们有N个业务目标对象的时候就需要N个静态代理对象这样不利于我们业务的扩展。
举例
张三不善交流一直找不到对象他的父亲张老三为其进行安排相亲此时张老三就是张三目标对象的代理对象。但是张老三不会给其他人安排相亲此时出现一个职业叫“媒婆”她会给各种人安排相亲此时“媒婆”就相当于动态代理对象。
为什么需要动态代理对象
减少代理对象的个数降低程序复杂度易于业务的动态扩展。
动态代理的实现原理
以JDK为例
1.拿到目标对象的引用通过反射获取目标对象的所有接口。
2.重新生成一个新的类代理类实现被代理类的所有接口方法。
3.将增强的逻辑代码加入到新生成的代理类中
4.编译代理类的源代码并生成字节码即class文件该过程在内存中完成
5.加载并执行新生成的代理对象
CGlib和JDK动态代理的对比
JDK动态代理是实现了被代理对象的接口CGlib是继承了被代理对象
JDK调用代理方法是通过反射调用CGlib是通过fastclass调用。