一、什么是静态代理和动态代理
静态代理:手动的创建代理类在程序运行前代理类就已经存在了。
动态代理:程序运行时运用反射机制动态创建而成。
二、静态代理的缺陷
1.代理类和委托类都需要实现相同的接口,如果接口的方法增加了,那么代理类和委托类都要实现这个方法,增加了代码维护的复杂度。
2.代理对象如果为多种类型的类服务,那么就要写多个接口(如果使用一个接口这违背的接口隔离原则),分别代理。
三、利用Proxy.newProxyInstance()生成代理类,完成代理功能(以下图片都来源https://www.jianshu.com/p/097e574e36b0)
四、Retrofit动态代理做了哪些事
五、不使用动态代理
如果使用静态代理,写个代理类实现Github Interface ,如果增加一个请求,那么代理类就要增加一个实现方法,违背了开闭原则,如果使用动态代理类,我们不关注代理类的具体实现过程,通过反射获取代理对象之后,直接调用方法。(图片来源https://www.cnblogs.com/baizhanshi/p/6611164.html)