
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
代理模式是程序员在学习java编程开发语言的时候需要重点掌握的一个编程技术,而今天我们就通过案例分析来了解一下,代理模式类型与实现原理。
1、代理定义
给某一个对象提供一个代理,并由代理对象控制对真实对象的访问,代理模式是结构型设计模式的一种。
2、静态代理
在程序运行前就已经存在代理类的字节码文件,代理类和被目标类的关系在运行前就确定了。
3、动态代理
代理类在程序运行期间优JVM根据反射等机制动态生成,在程序运行前并不存在代理类的字节码文件。
4、为什么需要动态代理?
静态代理实现简单,且能够在不侵入原代码的情况下实现目标类的功能扩展。但是当场景稍微复杂的时候,静态代理存在如下缺点:
当需要对多个类代理时,由于代理类要实现和目标类一致的接口,有两种方式
(这里指的实现不同接口的目标类,如果需要扩展实现同一接口的目标类可以选择使用装饰器模式)
只维护一个代理类,实现所有的目标类接口,但是这样会导致代理类过于庞大
维护多个代理类,每个目标对象对应一个代理类,但是这样会导致代理类过多
当接口需要新增,删除,修改的时候,目标类和代理类都要同时修改,不易维护
5、原理说明
通过实现InvovationHandler接口创建自己的调用处理器
通过为Proxy类指定ClassLoader对象和一组Interface来创建动态代理类
通过反射机制获取动态代理类的构造函数,其参数类型是InvocationHandler接口类型
通过构造函数创建动态代理类实例,调用处理器对象(InvocationHandler接口的实现类实例)作为参数传入
代理类继承Proxy类,实现目标类接口(本例中对应TargetInterface接口),重写equals、hashCode、toString的方法
类和方法都被publicfinal修饰,所以类和方法只能使用,不能继承和重写
方法的实现终会调用到代理调用处理器对象(本例中对应DynamicProxyHandler类实例)的invoke方法
希望这辈子,最让你无悔的事情就是来达内学习!学习向来不是件易事,但无论过程多么艰难,希望你依然热爱生活,热爱学习!永远记得,达内将与你一同前行!现在扫码,立即领取万元课程礼包,助力0基础快速入行,为你梳理行业必备技能,全方位了解岗位发展前景!
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。