怎么通俗怎么来,什么是AOP 思想 呢?

举个例子:就是有三个方法A,B,C,这三个逼都想找女朋友,那就来一个getGril()方法吧,然后在A,B,C中都调用一遍getGirl方法,这样A,B,C都顺利找到了女朋友。
接着来了一位好兄弟D,他说凭什么要在我的方法内部调用getGirl呢?
D坦露:我确实是想找女朋友的,我也确实是想调用她,可是我这方法体实在没有地方盛getGirl()了,何况爷的方法内部那都是主要业务,能不能跟getGril()方法说一声,在她那边记录一下,跟她说让她看着点,在我的方法内部中当我的rich()方法执行完了,就帮我调用一下getGirl()。
getGirl()听完想了想觉得也合理,就在自己的“登记表”中标注了一下,大致意思就是在D执行完rich()方法后就帮他调用自己(大意就是等D有钱了就找女朋友,悲)。

我突然觉得解决问题的关键或许是:换个角度,换个立场。

为什么这么说呢?
你看我们以前调用方法那都是什么,都是在方法中写入要调用的方法名,就像上面举得例子一样,要在自己的方法体中调用getGirl方法,这样就让我们自己方法的内部显得很冗杂。打个比方:在没有用AOP之前这个getGirl就像是静态的,她就坐在那里,一动不动,你要用她,她就帮你做事;而当用了AOP之后,她变成动态的了,她就像是变了一个人,她变得主动起来了,她开始关心其他的方法是不是要调用她了。
就像是:以前都是其他方法追着跟她说,某时某刻要调用一下你

相当于:被动等待

而现在是:她追着其他方法问:你们要调用我吗?调用的话就来我这登记一下

相当于:主动出击

如果上述内容懂了,那么去看AOP的概念来理解AOP就可能好理解了:
这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。
类的指定方法、指定位置:说的就是要调用她的方法。
我理解的这个动态就是:动态地在登记表中去寻找要调用她的方法(A,B,C,D),动态的将自己的代码切入(插入)到要调用她的方法(A,B,C,D)中.