android:对于动态代理的一些理解

前言

最近在学习网易推出的高级开发教程,里面有讲到retrofit源码分析,自己也跟着手撸了一个简易版retrofit,众所周知,retrofit的核心在于动态代理,所以就先不断查阅资料学习了一下动态代理Proxy。这里分享一下,如果有不对的地方还请大佬指出。

什么是动态代理?意义?

实现对委托对象方法的管理。说白了就是方法被执行的时候代理需要先做一点操作。个人认为用明星和经纪人的例子并不妥(这个例子实际上是静态代理)。实际上被代理的对象可能只是一个接口而没有具体的实现类。可以这么理解,经纪人有了唱歌这个能力,你可以给他一个明星让经纪人用明星唱歌,也可以经纪人自己安排,随便他怎么唱。说白了就是你希望一个接口的所有方法在执行的时候统一做一点操作。那就可以用动态代理实现。代理可以获取到方法的所有数据(注解名,注解值,参数注解,参数注解值,参数名,参数值),然后再对方法进行操作。
动态代理的意义:说意义不好解释,直接说实例会更好。(参照网上一些好的例子)

  1. retrofit网络请求:调用apiServer方法时,直接获取到方法的所有信息,然后进行一系列解析,最后通过okhttp3完成网络请求。网络请求完全封装在一个类中,最大程度降低耦合性。
  2. 如果想实现一组方法无论在哪里调用,都在主线程执行。通过动态代理接管执行方法,判断当前线程是否为主线程。是则执行,不是则切到主线程执行。就不需要再每一个方法执行的时候单独去判断。
  3. 事务的实现,在方法被执行时通过其他条件判断该方法是不是真的应该被执行。如果应该࿰
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值