当前位置: 首页 > news >正文

.net 网站开发吉安网站建设jxthw

.net 网站开发,吉安网站建设jxthw,建一千个网站做长尾词有效果吗,网站建设意识形态工作代理模式 我们先了解一下代理模式#xff1a; 在开发中#xff0c;当我们要访问目标类时#xff0c;不是直接访问目标类#xff0c;而是访问器代理类。通过代理类调用目标类完成操作。简单来说就是#xff1a;把直接访问变为间接访问。 这样做的最大好处就是#xff1a…代理模式 我们先了解一下代理模式 在开发中当我们要访问目标类时不是直接访问目标类而是访问器代理类。通过代理类调用目标类完成操作。简单来说就是把直接访问变为间接访问。 这样做的最大好处就是我们可以在代理类调用目标类之前和之后去添加一些预处理和后处理操作。来扩展一些不属于目标类的功能。 比如说我们可以在方法开始和结束前记录日志在方法执行前进行额外的参数校验进行事务管理如手动提交、权限校验等。 代理模式是一种设计思想实际实现方式上有静态代理和动态代理之分。 1.静态代理 静态代理在程序运行前我们就给目标类编写了其代理类的代码然后编译了其代理类。这样在程序运行之前我们就已经生成了它代理类的字节码文件即我们事先编写然后编译在程序运行的时候直接去读这些字节码文件进行运行。 例定义静态代理类 使用静态代理类 这里使用student调用dowork和使用staticProxy调用dowork效果不一样后者在原有功能基础上增加了调用方法前和调用方法后的打印功能。 这就我们代理模式的最大特点它可以控制对原有对象的访问。在原有对象的访问的基础上去做一些额外的能力。 这些类已经被编译为字节码文件了我们可以拿这几个文件去任何一个机器上执行。 如果是静态代理的话我们需要编写一个与其绑定的代理类。这个类会被编译成字节码文件然后再运行。 2.动态代理 而如果是动态代理的话我们就不需要是献给目标去编写代理代码而是在运行中通过反射自动生成代理对象 在Java中动态代理主要通过两种机制实现JDK动态代理和CGLIB动态代理。 2.1JDK动态代理 JDK动态代理基于Java的反射机制它只能为接口创建代理对象。要使用JDK动态代理需要实现java.lang.reflect.InvocationHandler接口并重写其invoke()方法。invoke()方法会在代理对象上的方法被调用时被执行。 例 这里最核心的就是通过Proxy.newProxyInstance方法去生成动态代理类以及访问它的实例。 使用动态代理 这里dynamicProxyList就是动态代理对象它会自动调用动态代理类DynamicProxy重写的invoke方法打印两次开始执行是因为调用了dynamicProxyList的toString方法。 在这里我们并没有编写ArrayList的代理类但是却把它代理了这就是动态代理的魅力。 问题来了这个它的动态代理类生成在哪里呢我们怎么没看见呢 原理 CallerSensitivepublic static Object newProxyInstance(ClassLoader loader, Class?[] interfaces, InvocationHandler h) {Objects.requireNonNull(h);Class? caller System.getSecurityManager() null ? null : Reflection.getCallerClass();Constructor? cons getProxyConstructor(caller, loader, interfaces);return newProxyInstance(caller, cons, h);} 2.1.1caller caller是一个内部类用于代表创建代理实例的调用者。这个caller类实际上是一个 InvocationHandler的实现它负责在代理实例上转发方法调用。 在newProxyInstance方法的实现中caller类并不是直接作为参数传递给newProxyInstance方法的而是在内部被创建和使用。这个类通常是一个匿名内部类它的主要作用是持有对原始InvocationHandler的引用并将方法调用转发给该处理器。 2.1.2cons 在 Java 中Proxy.newProxyInstance() 方法的源码中的 cons 表示 constructor它用来表示代理类的构造函数。在 Proxy.newProxyInstance() 方法内部会调用代理类的构造函数来创建实际的代理对象。 具体来说Proxy.newProxyInstance() 方法的源码中会根据传入的类加载器ClassLoader、接口数组Class[]和 InvocationHandler 对象来动态生成代理类并通过代理类的构造函数来创建代理对象。生成的代理类会实现传入的接口并将接口中的方法调用委托给传入的 InvocationHandler 对象来处理。 代理类的构造函数在代理对象实例化时会被调用并在内部完成代理对象的初始化工作比如将 InvocationHandler 对象赋值给代理对象。 因此在 Proxy.newProxyInstance() 方法源码中的 cons 所指的就是代理类的构造函数用来创建代理对象并完成代理对象的初始化工作。 实现思路代理类运行时生成的代理类和被代理类这里就是ArrayList实现同一个接口有被代理类的所有方法然后代理类把被代理类所有方法原先的调用通通先去调用代理类的InvocationHandler也就是我们自己写的那个代理类 在这个例子中共有32个Method方法对象对应的就是List的32个方法。 如这里某个方法进行代理我们可以看到这里它调用的是h的invoke方法这个h就是我们之前写的InvocationHandler的实现类DynamicProxy我们自己写的实现Invocation的动态代理类和这个$Proxy0代理类是两个东西  这样目标类的所有方法都会走我们写的那个通用代理类DynamicProxy的invoke方法。
http://www.hkea.cn/news/14489988/

相关文章:

  • 有意思的网站企业网站怎么收录
  • 北京学做网站王烨名字怎么样
  • 个人可以做网站维护吗揭阳网站开发定制
  • 怎么样利用一些网站开发客户关于网站建设的工作总结
  • 网站建设与维护课程灰色行业推广平台
  • 网站 设计工具外包网站设计哪家好
  • 网站图片一般像素源码下载免费
  • 网站的登录注册页面怎么做专业团队图片黑人抬棺
  • 网站空间流量企业模板网站怎么做
  • 个人网站设计论文参考文献网站如何做h5动态页面
  • 手机怎么制作网站教程视频网站首页html代码在哪
  • 这么建立com的网站wordpress如何做产品展示页
  • 墨刀怎么做网站商城app有哪些
  • 网站系统建设招标成都网站建设公司思乐科技
  • 北京通州做网站的公司网页设计与制作教程课后答案第三版
  • 宁波网站建设 泊浮科技推广普通话手抄报简单又好看
  • 企业网站制作排名ae模板
  • 为什么装修公司建议半包成都网站外包优化公司
  • asp公司网站竞价外包托管费用
  • 随州网络优化网站建设公司建设银行网站上的的研究报告
  • 网站建设的相关知识手机怎么做网站教程
  • 网站海外推广wordpress页面重定向
  • 网站服务器租用中信建设有限责任公司陈晓佳简历
  • 怎么用ps做网站效果图怎么可以做自己的网站
  • 旅游网站内容规划特点0基础如何快速做网站
  • 鲜花网站模板wordpress数据库删除所有评论
  • 医院信息化建设会议安排网站成都高端品牌网站建设
  • 南宁网站设计多少钱一个软件下载大全免费安装
  • 有做兼职的网站吗网站模板制作与安装教程视频
  • 网站制作国内知名企业网址大全页面设置在哪