type
status
date
slug
summary
tags
category
icon
password
功能太弱
这些只是打印简单的语句,功能太单一,如果可以额外写一个方法,然后插入到对应的位置,那么会更好。

image-20230215140539512
土方法解决
建新的包,复制proxy2的代码
把简单语句抽取出来成为一个方法
其实就是抽取出来

image-20230216101301985

image-20230216101248906
自己写一个极简Aop
单独写一个类
在动态代理里面调用这个方法,这样就实现了解耦

image-20230216103756721
我们看到很多框架要想达到某一个功能,要先继承一个类,后者实现某一个接口,在方法里面写上我们自己的逻辑,其实,在框架内部,也是像上面一样调用了这个方法。
分析
土方法不够灵活,第一种方法,直接写在方法内部,那么每一个方法都会打印日志,并不能达到某一个方法执行,另一个方法不执行的效果。
虽然抽出了一个类,但只是实现了切面的操作和业务代码的解耦。代理内部写死了
private SmartAnimal target_vehicle;
,那么只有实现了SmartAnimal这个接口的类才能使用切面,其他接口和类无法使用切面。 土方法是一种硬编码,没有注解和反射的支撑,所以不能完全的灵活。