代理模式相信大家都听说过,在代码实现角度来讲分静态代理和动态代理。平时在讲解代理模式时,大家用的例子都是用静态代理。不过呢,用静态代理来做例子能够更加清晰的表达出代理模式的精髓。
静态代理,从字面理解就是预先已经写好了代理。而动态代理是在运行时动态生成的,这种方式更加灵活。现在很多框架都用到了动态代理,比如Retrofit2,还有很多插件化的框架。下面我们就讲解下通过jdk来实现动态代理的功能。
首先创建一个接口,然后再创建一个实现类,如下:
下面我们就要通过jdk的代理来实现对MyCar对象的代理,通过代理来修改对象的函数执行逻辑:
最后执行的结果