动态代理和静态代理

一、什么是静态代理和动态代理

        静态代理:手动的创建代理类在程序运行前代理类就已经存在了。

        动态代理:程序运行时运用反射机制动态创建而成。


  二、静态代理的缺陷

        1.代理类和委托类都需要实现相同的接口,如果接口的方法增加了,那么代理类和委托类都要实现这个方法,增加了代码维护的复杂度。

        2.代理对象如果为多种类型的类服务,那么就要写多个接口(如果使用一个接口这违背的接口隔离原则),分别代理。


三、利用Proxy.newProxyInstance()生成代理类,完成代理功能(以下图片都来源https://www.jianshu.com/p/097e574e36b0)


四、Retrofit动态代理做了哪些事


五、不使用动态代理

如果使用静态代理,写个代理类实现Github Interface ,如果增加一个请求,那么代理类就要增加一个实现方法,违背了开闭原则,如果使用动态代理类,我们不关注代理类的具体实现过程,通过反射获取代理对象之后,直接调用方法。(图片来源https://www.cnblogs.com/baizhanshi/p/6611164.html)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、代理概念 为某个对象提供一个代理,以控制对这个对象的访问。 代理类和委托类有共同的父类或父接口,这样在任何使用...
    孔垂云阅读 7,758评论 4 54
  • 一、代理概念 为某个对象提供一个代理,以控制对这个对象的访问。 代理类和委托类有共同的父类或父接口,这样在任何使用...
    wyatt_plus阅读 807评论 0 5
  • 1 Proxy类的代码量被固定下来,不会因为业务的逐渐庞大而庞大;因为如果是静态代理的话,随着委托类方法数量越来...
    shuixingge阅读 1,584评论 1 1
  • 玩过“现金流”的小伙伴们会发现,游戏中很多机会是通过抽卡片的形式来获得的。而且很多卡片会标明,此机会可以...
    肖Fang星阅读 184评论 0 0
  • 地震,让我感悟生活的意义 我坐在昆明机场一号登机口候机座位上,准备乘机前往林芝,现在是早上六点四十...
    宁资虎阅读 1,365评论 4 4