【java反射】动态代理与AOP

AOP的原理是动态代理,动态代理的原理是反射。

情景导入

如果3个代码段中都包含同一段代码,那我们怎么规划更合理呢?
【java反射】动态代理与AOP_第1张图片

情景一:

代码段1、2、3都存在一个相同的方法fly(),那我就把fly()的实现抽离出来,这样3个代码段只调用方法就好了。

情景二:

我还想再优化,因为此时如果我把fly()方法改名为了flysky(),那我还需要各去3个代码段里修改。
我想要的效果是:不用在代码段中写对fly()的调用,3个代码段也能调用fly()方法。怎么做呢?
答:使用以动态代理为原理的AOP(面向切面编程)。
【java反射】动态代理与AOP_第2张图片
AOP的作用可以简单表述为:自动在方法执行的前中后执行一段同样的方法。比如想在每个方法执行前都加上“==== 有方法开始执行了====”,就可以使用AOP。

代码解读

【java反射】动态代理与AOP_第3张图片
【java反射】动态代理与AOP_第4张图片
【java反射】动态代理与AOP_第5张图片
运行结果:
【java反射】动态代理与AOP_第6张图片

小结

对反射的总结就在此告一个段落了。对于我这个初级小菜鸟来说,代码中使用了反射反而更繁琐了。这就像只实现一个简单的功能,却用了分层一样。不过大概知道了反射是怎么一回事,也很值呢,哇咔咔。

你可能感兴趣的:(——【java基础-高级】,•基础)