动态代理在框架层面大量使用,比如AOP框架, Retrofit等。这里学习下Java的动态代理。
静态代理
静态代理是设计模式中的一种,通过对原始对象提供一个代理类,实现在不改变原始类的情况下,改变原始类的方法。
静态代理是在程序运行前就需要写好代理类,确定好代理类和被代理类的关系。缺点就是对于每个被代理类,都需要写个代理类与之对应。
动态代理
概念
与静态代理不同,动态代理的代理类是在运行时创建的,即代理类和被代理类的关系是在运行时才确定的。好处在于可以处理被代理类预先不知道的情况,而且也解决了静态代理的缺点,通过一个类便可以代理多个原始类。