新解-到底什么是AOP?举个例子

假如:骑士和诗人一起去冒险,骑士负责打怪,诗人负责记录骑士的英雄事迹:

刚开始,骑士每次打完怪兽之后,不管做什么事情,它都要告诉诗人,说:“诗人,赶快记下来,我刚才打了一头野猪”。诗人,我刚才找到一个城堡,你赶快把我记下来,然后诗人说,我我我记,我记。刚开始这么做,你感觉这个骑士累不累?又要打怪,又要不停的告诉诗人,该记录什么。什么都包了,比如说:“有一次打龙的时候,骑士说,看我这姿势多帅,刚飞起来,记下来,我这个姿势太帅了,然后呢,诗人写下来,这个时候龙肯定不会坐以待毙,龙一口把骑士给咬住了。为什么,就因为骑士,在打怪的同时还要提醒诗人,该记什么。太累了,那么后来怎么办呢?

后来诗人说了,哎呀,你太辛苦了,你去打你的龙吧,你去打你的猪吧,我来给你记,你不用管,这时候,骑士就开始啪啪啪,去打龙,打猪。再也不用提醒诗人,该记什么了。有时候他打着打着,打到兴头上,都忘了诗人的存在了。诗人负责在旁边把他给记录下来,但是骑士不知道,骑士甚至不知道诗人记录了什么。

那么前面那种骑士提示诗人的那种行为:就等于我们业务代码放到了业务罗基层,要时时刻刻提醒业务逻辑,在杀怪的时候还要提醒,这个时候代码就很乱,职责分工不清楚了,那么这个时候如果通过AOP,诗人通过AOP 的方式,在你打怪的时候,不知不觉的时候,我都记录下来了。这个时候骑士就可以专心致志的干活了。做自己的业务逻辑,去打龙,打猪。他不需要,甚至不知道诗人把他打怪的过程记录下来了。这个时候职责就分清了,那么这个时候,诗人如何知道什么该记录呢?这就是由AOP来提示,AOP告诉诗人,你这个时候应该为这个骑士来提示,你那个时候应该为那个骑士来记录。那么这就是AOP。声明式业务代码就是通过AOP的方式来实现的。


分享到:


相關文章: