课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
代理模式是程序员在开发软件的时候会经常用到的一种设计模式,今天我们就通过案例分析来了解一下,静态代理与动态代理的区别。
1、代理模式
代理模式是一种设计模式,提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能
2、静态代理
使用方式
创建一个接口,然后创建被代理的类实现该接口并且实现该接口中的抽象方法。之后再创建一个代理类,同时使其也实现这个接口。在代理类中持有一个被代理对象的引用,而后在代理类方法中调用该对象的方法。
3、JDK动态代理
使用JDK动态代理的五大步骤:
通过实现InvocationHandler接口来自定义自己的InvocationHandler;
通过Proxy.getProxyClass获得动态代理类;
通过反射机制获得代理类的构造方法,方法签名为getConstructor(InvocationHandler.class);
通过构造函数获得代理对象并将自定义的InvocationHandler实例对象传为参数传入;
通过代理对象调用目标方法;
4、静态与动态区别
JDK静态代理是通过直接编码创建的,而JDK动态代理是利用反射机制在运行时创建代理类的。
其实在动态代理中,核心是InvocationHandler。每一个代理的实例都会有一个关联的调用处理程序(InvocationHandler)。对待代理实例进行调用时,将对方法的调用进行编码并指派到它的调用处理器(InvocationHandler)的invoke方法
对代理对象实例方法的调用都是通过InvocationHandler中的invoke方法来完成的,而invoke方法会根据传入的代理对象、方法名称以及参数决定调用代理的哪个方法。
希望这辈子,最让你无悔的事情就是来达内学习!学习向来不是件易事,但无论过程多么艰难,希望你依然热爱生活,热爱学习!永远记得,达内将与你一同前行!现在扫码,立即领取万元课程礼包,助力0基础快速入行,为你梳理行业必备技能,全方位了解岗位发展前景!
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。