AOP的概念已经热了很久了,我一直不太关注,也不太理解这个面向方面编程中的方面是什么意思。由于AOP和OOP仅一字之差,所以在网上看到大量的文章来拿这两个作对比,看完后还是稀里糊涂的。
 
这段时间开始拿Spring做新产品,于是开始仔细研究AOP。这才发现AOP和OOP讲的根本不是同一类的东西。 
AOP中的方面是指问题的一个方面,相对于问题的全部来说的。AOP就是针对问题的一个方面编程。它把一个问题(或者说是需求)从程序级别上拆分成几个方面,让程序员在编程时只关注自己应当关注的方面,而完全忽略其它的方面。最后由AOP框架来组合不同程序员(或者说是不同模块)的程序。
 
从这点上来说,AOP的确对模块化开发有很大的裨益。


AOP的好处,主要有两点。
一、完全消除了编码时模块之间的依赖,解决了团队开发中一龙拦住千江水的瓶颈问题。当然,做到这一点除了AOP外,还必须做到面向接口编程。
二、可以在任意阶段,向已有功能模块中填加新功能,且不侵入原有功能。