美文网首页
动态代理知识感悟

动态代理知识感悟

作者: 云帆_78f7 | 来源:发表于2019-01-08 14:01 被阅读0次

https://blog.csdn.net/briblue/article/details/73928350   基于此篇博客整理的感悟,再次多谢大佬

看retrofit,看到了动态代理,并没有实际是使用。目前只是基于上述博客整理,之后有新的感悟会更新 。。。

有大佬看了有什么不对的请多指正,愿意献上膝盖

代码中的代理:使用共同的接口实现功能的增强。基于开放封闭原则,新增是允许的,修改是不允许的。

静态代理

要有一个接口作为功能实现  (电影播放 )

实例  实现电影播放的接口  (电影)

代理类   实现电影播放的接口(电影院)   电影院接收电影实例,在自己的接口方法实现实例的接口方法,可以加入自己的需要的功能(播广告)

实现: 实例化真实的实例类,实例化代理类传入实例对象(由接口接收)并且实现接口的功能即可  

代理类实现了接口的功能,在不修改实例的情况下,可以进行功能的增强。

这符合封闭开放原则,(增强了功能的实现,却不修改之前的代码,只是增加了代码,提高了复用率)

问题:如果我们想实现新的功能呢,肯定会有一个新的接口,对应写一个新的代理类(不能修改之前的代码)

动态代理

原理和静态代理是一样的,代理类和实力类实现相同的功能,但是动态代理类不需要自己在预先写代理类了,只是通过代码反射生成代理类来实现对应实现的功能。

要有一个接口作为功能实现  (电影播放 )

实例实现电影播放的接口  (电影)

一个实现了 InvocationHandler接口的类 同样要接收实例类,并且 在其invoke方法中实现类似代理类需要实现的功能增强 

实现: 实例化真实的实例类,实例化实现 InvocationHandler接口的类并传入实例的类,通过 Proxy 的静态方法 newProxyInstance 才会动态创建代理类(由接口接收),执行接口的方法。

newProxyInstance 方法的三个参数  实例类的类加载器,功能的接口,实现InvocationHandler接口的类。

所以如果想要增加新的功能实现,这个时候只需要写新的接口以及实例类,还是用之前的实现InvocationHandler接口的类即可

此时动态生成的代理类是对应接口的,一个接口一个类,类在内存中

相关文章

  • 动态代理知识感悟

    https://blog.csdn.net/briblue/article/details/73928350 基于...

  • CGLIB动态代理

    知识回顾 在文章初识AOP中,了解到为什么要用代理,静态代理和动态代理的区别,在JDK的动态代理中讲到JDK的动态...

  • java动态代理

    原文地址:java动态代理 代理 最近在学习 Spring 框架,AOP涉及到动态代理的知识,故整理一下,了解动态...

  • 面试系列~动态代理实现与原理

    动态代理有JDK动态代理, CGLIB动态代理, SpringAOP动态代理 一,JDK动态代理  jdk动态代理...

  • 编程常用的设计模式

    动态代理和静态代理 静态代理 动态代理 静态代理与动态代理的区别 JDK中的动态代理和CGLIB 实现动态代理的方...

  • Spring的AOP原理分析

    一 动态代理 动态代理分为JDK动态代理和CGLIB动态代理 jdk动态代理 被代理类(目标类)和代理类必须实现同...

  • JDK 动态代理 应用

    动态代理的思想来源于 代理模式本片文章不讲述设计模式,需要学习设计模型知识请自行查阅资料. 被代理类 JDK动态代...

  • Java 动态代理原理

    动态代理 代理模式 代理模式强调在对被代理对象的控制。代理模式知识点不做赘述。 静态代理,代理类的代码是在编译期间...

  • 设计模式之代理模式

    代理分为静态代理和动态代理。 动态代理又包括基于JDK的动态代理、基于CGlib 的动态代理、基于Aspectj实...

  • Java高级主题(五)——动态代理

    代理可以分为静态代理、动态代理,动态代理又可以分为 jvm的动态代理 和 cglib的动态代理。像spring框架...

网友评论

      本文标题:动态代理知识感悟

      本文链接:https://www.haomeiwen.com/subject/amcvrqtx.html